Hallo allemaal,

Momenteel zitten wij met een probleem en onze developer is door omstandigheden niet meer aanspreekbaar. Ik zal het even kort uitleggen:
Wij hebben een CMS systeem waar wij, als er een advertentie verkocht wordt, de gegevens in kunnen voeren. Daarnaast hebben wij een CRM systeem met locaties waar de ingevoerde adverteerders worden gekoppeld aan de betreffende locatie.

Sommige adverteerders worden automatisch verlengd nadat de periode verlopen is. Het logging systeem geeft aan dat de cronjob elke ochtend draait. Nu nog steeds. Op 30-09-2019 heeft het systeem de laatste orders verlengd en op 01-10-2019 is dit gestopt. Dit terwijl er 4 orders verlengd moesten worden op de 1e van oktober. Tot nu toe wordt er geen enkele order meer verlengd vanuit 2018.

Ook konden wij toekomstige verlengingen bekijken. Als we de datum aanpaste in het systeem naar bijvoorbeeld 1-11-2020 zagen wij de orders die dan verlengd zullen worden. Dit werkt helaas ook niet meer.

Als ik de query uitvoer met SQL geeft deze foutmeldingen aan namelijk: Warning: #1292 Incorrect datetime value: '2'

De query en de cronjob hebben 2 jaar vlekkeloos gedraaid. Hoe het kan dat dit niet meer werkt is voor ons een raadsel. Vanuit onze kant is er niets veranderd. De developer is al ruim 2 jaar niet meer in dienst en alle toegang was geblokkeerd voor hem, en wij hebben er te weinig kaas van gegeten om dit probleem op te lossen. De hostingpartij zegt op hun beurt dat zij niets, maar dan ook niets, gewijzigd hebben op de server.

Wie kan dit raadsel voor ons oplossen. Ik hoor graag van je!

Met vriendelijke groet,
Mauro van de Pol


[size=xsmall]Toevoeging op 21/11/2019 14:53:21:[/size]

Heb je de relevante code van de query en wat er omheen zit?
Cronjob.php:

<?php  defined('BASEPATH') OR exit('No direct script access allowed');
class Cronjob extends CI_Controller
{
    public function __construct() {
        parent::__construct();
    }
    function index() {

        $outp = $this->av_auto_prolongate();

        if ($outp === false) {
            $data['response'] = "<h1>Errors during av auto prolongate</h1>";
        } else {
            $data['response'] = "OK";
        }

        $this->load->view('cronjob/index', $data);
    }
    /**
     * AV = automatische verlenging
     * Wanneer orders geschreven zijn met AV, betekent dat deze
     * automatisch worden verlengd na het aflopen van de termijn
     * Tenzij een einddatum is opgegeven.
     * 
     * http://cccms.dev/index.php/cronjob/av_prolongate
     */
    function av_auto_prolongate($gelukt = false) {

        $this->load->helper('typography');
        $this->load->model('advertentie_model');

        $data['data'] = $this->advertentie_model->prolongateAVorders();

        if ($data['data'] === false) {
            $handling_status = "niks te doen";
        } else { 
            $handling_status = "uitgevoerd";
        }

        //update order log
        $this->advertentie_model->updateOrderLog(array(
        'subject' => 'AV', 'action' => 'cronjob', 
        'username'=>'System', 'note' => $handling_status));

        $gelukt = true;
        return $gelukt;
    }
}
/* End Of File */
?>


[size=xsmall]Toevoeging op 21/11/2019 15:04:40:[/size]

av_prolongate.php:

<a href="<?php echo site_url(); ?>/orders">Terug naar Orderoverzicht</a>

<?php
if (empty($data)) {
    echo "<h1>Niets te doen</h1>";
} else {
    echo "<h1>Werk aan de winkel</h1>";
    $this->mygeneric->p($data, false);
}    
?>




Query:

SELECT 
            o.*,
            k.`gy_campaign_id`,
            k.`startdatum`,
            k.`looptijd`,
            k.`bonus`,
            c.`company`, 
            c.`city`, 
            c.`province`, 
            a.`bedrijfsnaam`, 
            a.`plaats`,
            DATE_ADD(STR_TO_DATE(k.startdatum, '%d-%m-%Y'), INTERVAL MAX(k.looptijd) MONTH) AS expired
          FROM cc_koppeltabel_advertentie_sbcompanies k
          INNER JOIN cc_order o  ON (k.idcc_advertentie = o.idcc_advertentie)
          INNER JOIN `cc_adverteerder` a   ON (o.`idcc_adverteerder` = a.`idcc_adverteerder`)
          INNER JOIN `companies` c   ON (k.`companies_id` = c.`companies_id`)
          WHERE
            looptijd IN (
                  SELECT DATE_ADD(STR_TO_DATE(startdatum, '%d-%m-%Y'), INTERVAL MAX(looptijd) MONTH) as expired2
              FROM `cc_koppeltabel_advertentie_sbcompanies`
              GROUP BY
                idcc_advertentie
              ORDER BY
                expired2 DESC
                  )
            AND o.auto_prolongate = 1 
            AND o.`status` > 3 
            AND o.successor IS NULL 
            AND (o.auto_prolongate_end_date IS NULL OR o.auto_prolongate_end_date > CURDATE() OR o.auto_prolongate_end_date = '0000-00-00 00:00:00')
            AND k.bonus = 0
          GROUP BY k.idcc_advertentie 
          ORDER BY expired ASC
          LIMIT 750


orders_index_table.php:

<?php 
echo validation_errors();

if (substr($this->session->naam,0,4) == "Dirk" || substr($this->session->naam,0,4) == "DvdM") {
    
    /** Show filter options */
    if (isset($_SESSION['order_filter'])) {
        
		echo '<div onclick="$(\'#show_session\').toggle()" style="margin:0;padding:0" class="muis kleiner">F details</div>
                <div id="show_session" style="display:none;">';
        $this->mygeneric->p($_SESSION['order_filter'], FALSE);
        echo '</div>';
		
    } elseif (isset($db_options)) {
		
		echo '<div onclick="$(\'#show_session\').toggle()" style="margin:0;padding:0" class="muis kleiner">F details</div>
                <div id="show_session" style="display:none;">';
        $this->mygeneric->p($db_options, FALSE);
        echo '</div>';
		
	}
    
    /** Show raw database entries */
    echo '<div onclick="$(\'#show_db_entries\').toggle()" style="margin:0;padding:0" class="muis kleiner">DB entries</div>
                <div id="show_db_entries" style="display:non3;">';
    
	if (!empty($sql_query)) {
		echo 'Query: ';
		
        $this->mygeneric->p($sql_query, false);
    } else {
		echo 'no query found...';
	}
	
    
	echo 'Orders: ';
	echo count($orders);
	//$this->mygeneric->p($orders, false);

	echo '<hr size=4 /> AVOrdersCount: ';

	echo count($AVOrdersCount);
    //$this->mygeneric->p($AVOrdersCount, false);
    
    
    echo '</div>';
    
    
/*
     if (isset($options)) {
        echo '<div onclick="$(\'#show_opts\').toggle()" style="margin:0;padding:0" class="muis kleiner">Filter details</div>
                <div id="show_opts" style="display:none;">';
        $this->mygeneric->p($options, false);
        echo '</div>';
     }
*/
    $this->mygeneric->p($this->session->order_tbl, FALSE);
    
}

/**
 * This page displays the orders' database output ordently
 * - requires to be shown in orders_index.php
 */


/*
if (!empty($this->session->flashdata())) {
    echo "<span class=\"error\">{$this->session->flashdata('Order_form_input_error')}</span>";
    echo validation_errors('<span class="error">','</span>');
    echo $this->session->flashdata();
}else{
    echo '<p class="flashConfirm" style="background-color:#fff;border:0;border-bottom:1px solid #ccc;margin:0;">
            De order is succesvol aangepast. 
        </p>';
}
*/

//setlocale(LC_MONETARY, 'nl_NL');
//echo money_format('%.2n', '1520.35') . "\n";

if(!empty($orders) && is_array($orders) && count($orders)>0) {

    $week_old = $date_old = $naam_old = $ref_old = -1;

    $h = 0;//aantal locaties per order
    $i = 0;//aantal locaties heel overzicht
    $j = 0;//aantal orders heel overzicht

    $k = 0;//orderprijzen per dag
    $l = 0;//som van de week
    $m = 0;//som van alle zichtbare

    $n = 0;//som aantal orders met termijnbetalingen

    $week_einde = false;

    $total_orders = count($orders);
    $total_orders_digits = strlen($total_orders);

    $q = array();//array user/orders and sum


    $i_temp = 1;//start of counting locations
    $company_old = null;


    /** Getting the AUTO PROLONGATE orders here */
    /* Are the current filter options, in the future (or past)? */
    /*
    $today = date('Y-m-d');
    echo "vandaag: " . $today . " Week: " . date('W');
    $this->mygeneric->p($options,FALSE);
    $o = $options;

    $future_ghost_av_orders = FALSE;

    if ($o['yearin'] > date('Y')) {

        $future_ghost_av_orders = TRUE;

    } elseif ($o['yearin'] == date('Y')) {

        if ($o['weekin'] > date('W')) {
            $future_ghost_av_orders = TRUE;
        }

        if ($o['maandin'] > date('m')) {
            $future_ghost_av_orders = TRUE;
        }

    } elseif (empty($o['yearin'])) {

        if(!empty($o['weekin'])) {

            if ($o['weekin'] > date('W')) {
                $future_ghost_av_orders = TRUE;
            }

        }

    } else {

        if(!empty($o['datein'])) {


            if ($this->mygeneric->swap_date_format($o['datein'], false) > $today) {
                $future_ghost_av_orders = TRUE;
            }
        }
        if(!empty($o['datetotin'])) {

            if ($this->mygeneric->swap_date_format($o['datetotin'], false) > $today) {
                $future_ghost_av_orders = TRUE;
            }
        }

    }

    //$bal = $this->mygeneric->swap_date_format($o['datetotin'], false);
    //echo " Swap dates: " . $bal;

    if ($future_ghost_av_orders) {
        echo 'GHOST';
    }

    $f_year = !empty($o['yearin'])  ? $o['yearin']  : date('Y');
    $f_mnth = !empty($o['maandin']) ? $o['maandin'] : date('m');
    $f_week = !empty($o['weekin'])  ? $o['weekin']  : date('W');
    $f_day  = date('d');

    $f_date = $f_year .'-' . $f_mnth .'-' . $f_day;
    */

    /*
    $search_date = $f_year.'-'.$f_mnth;
    $this->mygeneric->p($search_date);
    */

    foreach($orders as $order) {

        if($future_ghost_av_orders === TRUE) {

        //$this->mygeneric->p($order, TRUE);

            //$bla = $this->mygeneric->dateDifference($today, $order->created); echo $bla;

            /*
            $t_create_date_order = new DateTime($order->created);
            date_add($t_create_date_order, date_interval_create_from_date_string("{$order->looptijd} months"));
            $new_date_order = date_format($t_create_date_order, 'Y-m-d');
            $order->created = $new_date_order;
            echo $new_date_order;
            */
        }
    

	if ($ref_old != -1) {
            if ($order->unique_id != $ref_old) {
                echo  '
                <div style="border-top:3px solid #fff;width:100%;padding-bottom:6px;background-color:#e5e5e5"></div>
            </div>
            ';
            $h = 0;
            }
	}

	$short_date = substr($order->created, 0, 10);
	$new_date   = $this->mygeneric->swap_date_format($short_date);
	
	$weeknr = date('W', strtotime($short_date));
	$yearnr = date('Y', strtotime($short_date));
	
	if ($weeknr != $week_old) {
            // SOM DAG ORDER
            if ($ref_old != -1) {
                
                if ($this->session->userType == "admin") {
                    echo '<div style="display:table;width:100%;">
                                <div style="display:table-row;">
                                    <div class="td" style="width:20px;"></div>
                                    <div class="td hdr_sum_day">'.lang('sum').'<sub>'.lang('day').'</sub> = &euro; ' . $this->mygeneric->format_the_money($k) . '</div>
                                    <div class="td" style="width:45px;border-top:1px solid #ccc"></div>
                                </div>
                            </div>
                        ';

                    $l = $l + $k;
                    // weergave som week:
                    echo '<div style="display:table;width:100%;margin-top:5px;">
                                <div style="display:table-row">
                                    <div class="td" style="width:40px;"></div>
                                    <div class="td hdr_sum_week">'.lang('sum').'<sub>'.lang('week').'</sub> = &euro; ' . $this->mygeneric->format_the_money($l) . '</div>
                                </div>
                            </div>
                        ';
                    $week_einde = true;
                    $m += $l;
                    $l = 0; $k = 0;
                }
            }

            $week_old = $weeknr;
            echo '<div class="hdr_week">'.ucfirst(lang('week')).' ' .$weeknr . ' in '.$yearnr.'</div>
            ';
	}
	
	if ($new_date != $date_old) {
            // SOM DAG ORDER
            if ($ref_old != -1) {
                
                if ($this->session->userType == "admin") {
                    
                    $l = $l + $k;

                    // dont show sum day after week header
                    if ($week_einde == false) {
                        echo '<div style="display:table;width:100%">
                                    <div style="display:table-row">
                                        <div class="td" style="width:20px;"></div>
                                        <div class="td hdr_sum_day">'.lang('sum').'<sub>'.lang('day').'</sub> = &euro; ' . $this->mygeneric->format_the_money($k) . '</div>
                                        <div class="td" style="width:45px;border-top:1px solid #ccc"></div>
                                    </div>
                                </div>
                        ';
                        $k = 0;
                    } else {
                        $week_einde = false;
                    }

                }
            }

            $date_old = $new_date;
            echo '
                <div class="dik hdr_day">
                    <span class="hdr_day_inner">' . $new_date . '</span>
                </div>
            ';
            $naam_old = -1;
	}
	
	if ($order->naam != $naam_old) {
            $naam_old       = $order->naam;
            $naam_old_short = substr($naam_old, 0, 3);
            $naam_old_short = strtoupper($naam_old_short);
	}
	
	/* $i_temp = unique locations */
	if ($company_old == $order->company 
            && ($order->status >= 0 || $order->status == -2) 
           )
        {
            if ($order->unique_id != $ref_old) {
                $i++;
                $i_temp = $i;
            } else {
                $i_temp = $i_temp;
            }
	} elseif ($order->status >= 0 || $order->status == -2) {
            $i++;
            $i_temp = $i;
	} else {
            //$i++;
            $i_temp = 0;
	}
	
	
	if ($order->unique_id != $ref_old) {
            
            $ref_old     = $order->unique_id;
            $company_old = $order->company;//track $i_temp for unique company-counter

            $count = 0;
            //$j++;
            if ($order->status >= 0 || $order->status == -2) {
                $j++;
                $j_temp = $j;
            } else {
                $j_temp = 0;
            }

            if ($order->status >= 2 || $order->status == -2) {
                $k = round($k + $order->prijs, 2);
            }

            if ($order->status == -1) {
                $class = " fade bggrijs schuin kleiner";
            } elseif ($order->status == 0) {
                $class = " fade ";
            } elseif ($order->status == 1) {
                $class = " dik ";
            } else {
                $class = "  ";
            }

            $invoice_date = substr($order->created, 0, 10);


            if ($order->status > 0 || $order->status == -2) {
                if ( !array_key_exists($order->naam, $q) ) {

                    $q[$order->naam]		= array();
                    $q[$order->naam]['orders']	= 1;
                    $q[$order->naam]['sum']	= $order->prijs;
                    $q[$order->naam]['name']	= $order->naam;

                    if ($order->is_prolongation == "yes") {

                        $q[$order->naam]['prolongated_orders'] = 1;
                        $q[$order->naam]['prolongated_sum']    = $order->prijs;

                        $q[$order->naam]['new_orders'] = 0;
                        $q[$order->naam]['new_sum']    = 0;

                    } else {

                        $q[$order->naam]['prolongated_orders'] = 0;
                        $q[$order->naam]['prolongated_sum']    = 0;

                        $q[$order->naam]['new_orders'] = 1;
                        $q[$order->naam]['new_sum']    = $order->prijs;
                    }

                } else {

                    $q[$order->naam]['orders']	= $q[$order->naam]['orders'] + 1;
                    $q[$order->naam]['sum']	= $q[$order->naam]['sum'] + $order->prijs;

                    if ($order->is_prolongation == "yes") {

                        $q[$order->naam]['prolongated_orders'] = $q[$order->naam]['prolongated_orders'] + 1;
                        $q[$order->naam]['prolongated_sum']    = $q[$order->naam]['prolongated_sum'] + $order->prijs;

                    } else {

                        $q[$order->naam]['new_orders'] = $q[$order->naam]['new_orders'] + 1;
                        $q[$order->naam]['new_sum']    = $q[$order->naam]['new_sum'] + $order->prijs;

                    }

                }
            }
            
            /** AANTAL VERLENGINGEN */
            
            if ( isset($order->idcc_adverteerder) && !empty($order->idcc_adverteerder) ) {
                //$AVnrs = $AVOrdersCount[$order->idcc_adverteerder];
                $AVnrs = !empty($AVOrdersCount[$order->idcc_adverteerder])  ? $AVOrdersCount[$order->idcc_adverteerder]  : NULL;
            } else {
                $AVnrs = "";
            }
            
            
            if ($AVnrs > 1) {
                $showAVnrs = '<span title="Adverteerder id '.$order->idcc_adverteerder.' is in totaal ' . $AVnrs . 'x verlengd; zoek op campagne id: ' . $order->gy_campaign_id . '"><strong>' . $AVnrs . '</strong></span>';
            } else {
                $showAVnrs = NULL;
            }
            
            /** Verlenging */
            if ($order->is_prolongation == "yes") {
                $is_prolong = "<span class=\"prolongated\" style=\"white-space: nowrap;\" title=\"Verlenging\">V {$showAVnrs}</span>";
            } else {
                $is_prolong = "<span class=\"is_NO_badge\" style=\"white-space: nowrap;\">V {$showAVnrs}</span>";
            }
                
            
            /** AUTOMATISCHE verlenging */
            $is_auto_prolong = "<span class=\"is_NO_badge\" style=\"width:14px;\">AV</span>";
            if(isset($order->auto_prolongate)) {
                if ($order->auto_prolongate == "1") {
                  $is_auto_prolong = "<span class=\"prolongated\" style=\"border:1px inset #eee;width:14px;background-color:yellow;color:black;\" title=\"Automatische Verlenging (einde datum: ".$order->auto_prolongate_end_date.")\">AV</span>";
                }
            }

            /** Exclusiviteit */
            if ($order->exclusief == "1") {
                $is_excl = "<span class=\"is_excl\" title=\"Deze order heeft exclusiviteit!\">X</span>";
                $is_excl_link = "is_excl_link";
            } else {
                $is_excl = "<span class=\"is_NO_badge\" style=\"width:10px;\">X</span>";
                $is_excl_link = "";
            }

            echo '
            <div class="rose mo1 '.$class.' ord_entry " ';

            if ($this->session->userType == "admin") {
                echo ' onmouseenter="$(this).find(\'.d8\').first().show();"
                    onmouseleave="$(this).find(\'.d8\').first().hide();"
                onclick="$(this).find(\'.d8\').first().show();"';
            }
            echo '>
                    <div style="display:table-row;border-top:1px solid #abc">
                            <div class="td rechts kleiner" style="width:55px;overflow:hidden;" title="'.lang('ord_ov_counting_ord').'">';

            if ($this->session->userType == "admin") {
            //onclick="document.location.href=\''.site_url().'/advertentie/edit/'.$order->unique_id.'\'"    
                echo ' <a href="'.site_url().'/advertentie/edit/'.$order->unique_id.'" style="">
                        <span class="ico ico_d d8 muis" title="'.lang('ord_edit_help').'" style="margin-right:1px;display:none;"></span>
            </a>';

            } elseif ($order->status == 1) {

                echo '<span class="ico ico_d d8 muis" title="'.lang('ord_edit_help').'" style="margin-right:1px;"
            onclick="document.location.href=\''.site_url().'/advertentie/edit/'.$order->unique_id.'\'"></span>';
            }
            //overflow:hidden;text-overflow: ellipsis;white-space: nowrap;
            echo str_pad($j_temp, $total_orders_digits, "0", STR_PAD_LEFT).'.
                    </div>
                            <div class="td bglichtgrijs" style="width:325px;padding:5px; height:21px;overflow:hidden;"
onclick="$(\'#r' . $order->unique_id . '\').toggle();">';

            if ($future_ghost_av_orders === FALSE) {
                if ($order->is_prolongation == "yes") {
                    echo '
                    <span class="muis ico ico_g g2" onclick="window.open(\'' . base_url() . 'invoices/' . trim(substr($order->created, 0, 4)) . '/' . trim($invoice_date) . '_' . $order->unique_id . '.pdf\')" '
                        . 'title="PDF wordt niet automatisch aangemaakt bij een verlenging van een AV-order ... kan wel gemaakt worden door opnieuw op te slaan"></span>
                ';
                } else {
                    echo '
                    <span class="muis ico ico_g g1" onclick="window.open(\'' . base_url() . 'invoices/' . trim(substr($order->created, 0, 4)) . '/' . trim($invoice_date) . '_' . $order->unique_id . '.pdf\')" '
                        . 'title="'.lang('ord_invoice_help').'"></span>
                ';
                }
            }

            echo '
'.$is_auto_prolong .''. $is_prolong .''. $is_excl .'
                <div class="ulink '.$is_excl_link.'" style="width:250px;height:20px;overflow:hidden;display:inline;display:inline-flex;vertical-align:middle;color:#f2007e;font-size:14px;" title="' . $order->idcc_advertentie . ' '.lang('ord_advertiser').': ' . 
mb_substr(stripcslashes($order->bedrijfsnaam), 0, 64, 'UTF-8') . ' '.lang('in').' ' . 
mb_substr(stripcslashes($order->plaats), 0, 64, 'UTF-8') . '"
>'. mb_substr(stripcslashes($order->bedrijfsnaam), 0, 64, 'UTF-8') . '</div>
                </div>
                <div class="td kleiner ord_employee" title="'.mb_substr(stripcslashes($naam_old),0,32).'">
                    <span class="ord_employee_abbr">'.mb_substr(stripcslashes($naam_old_short),0,4).'</span>
                </div>
            <div class="td" style="width:135px;white-space:nowrap;" title="'.$order->status.'">';

            $orderStatusList = lang('ord_status_list'); 
            if ( $this->session->userType == "admin" ) {

                echo '   <select name="newostatus" class="muis" onchange="$.ajax({
                url: \'' . site_url() . '/orders/flipStatus/\', 
                type: \'POST\',
                data: { status: $(this).val(),
                        ref: \'' . $order->unique_id . '\',
                 \''.$this->security->get_csrf_token_name().'\': \''.$this->security->get_csrf_hash().'\' 
                        },
            });"
        style="border:0;font-size:11px;">';
//	success: parent.$(\'#myForm\').submit()			

                foreach($orderStatusList as $key => $value) {

                    echo '<option value="'.$key.'"';

                    if ($key == $order->status)	{
                        echo ' selected="selected" style="color:#e6007e;"';
                    }

                    echo '>'.$value.'</option>';
                }

                echo '</select>
                ';
            } else {
                if (isset($orderStatusList[$order->status])) {
                    echo $orderStatusList[$order->status];
                } else {
                    echo "onbekend";
                }
            }


            echo '	</div>';
            /*
<!--				<div class="td" style="text-align:center;">';//width:5px;

            if ($this->session->userType == "admin") {

                    echo ' <span class="ico ico_d d8 muis" title="'.lang('ord_edit_help').'" style="margin-left:10px;"
            onclick="document.location.href=\''.site_url().'/advertentie/edit/'.$order->unique_id.'\'"></span>';

            } elseif ($order->status == 1) {

                    echo '<span class="ico ico_d d8 muis" title="'.lang('ord_edit_help').'" style="margin-left:10px;"
            onclick="document.location.href=\''.site_url().'/advertentie/edit/'.$order->unique_id.'\'"></span>';

            }

            echo '</div>
-->		*/
    echo '        <div class="td muis" onclick="$(\'#r' . $order->unique_id . '\').toggle();" style="width:70px;text-align:right;white-space:nowrap;">';

            if ($this->session->userType == "admin") {

                if ($order->status < 2 && $order->status >= -1) {
                        echo '<span style="text-decoration:line-through">&euro; '. $this->mygeneric->format_the_money($order->prijs) . '</span>';
                } else {

                    if ($order->payment_terms > 1) {
                        $n = $n + 1;//som aantal order met termijnbetalingen
                        echo '&euro; '. $this->mygeneric->format_the_money($order->prijs);
                    } else {
                        echo '&euro; '. $this->mygeneric->format_the_money($order->prijs);
                    }
                }
            }

            //'.lang('ord_title_ad_referentie').'
            echo  '</div>
                    <div class="td rechts muis" style="width:80px;white-space:nowrap;" onclick="$(\'#r' . $order->unique_id . '\').toggle();" title="">';

            if ($this->session->userType == "admin") {

                if ($order->payment_terms > 1) {
                    echo '<span class="schuin" style="font-size:11px;color:#333;padding-right:2px;font-weight:400;">' . $order->payment_terms . 'x &euro;'. $this->mygeneric->format_the_money($order->payment_per_term) . '</span>';
                }
            }
            echo '
                    </div>
                </div>
            </div>
            <div style="display:none;width:100%;" id="r' . $order->unique_id . '">';
	}

	$h++; // aantal locaties per order
	
	$bonus_loc = "";
	if ($order->bonus == 1) {
	    $bonus_loc = "[B]";
	}
	
	echo '
		<div class="tr mo1" style="width:100%;">
                    <div class="td rechts grijs" style="width:55px;font-size:85%;" title="'.lang('ord_ov_counting_loc').')">'.$i_temp.'.</div>
                    <div class="td rechts" style="width:20px;padding-right:5px;"><span class="rose dik" title="looptijd in maanden" style="cursor:help;">'.$order->looptijd .'</span></div>
                    <div class="td" style="width:303px;padding-right:15px;overflow:hidden;text-overflow: ellipsis;white-space: nowrap;" title="CRM campaign_id: '.$order->gy_campaign_id.'">'
. mb_convert_case(stripcslashes($order->company), MB_CASE_TITLE, 'UTF-8') . ' ' . $bonus_loc . '</div>
                    <div class="td" style="width:282px;">'. mb_convert_case(stripcslashes($order->city), MB_CASE_TITLE,'UTF-8') . ', '
. mb_convert_case(stripcslashes($order->province), MB_CASE_TITLE,'UTF-8') . '</div>
	        <div class="td" style="width:1px"></div>
	        <div class="td rose dichter rechts" style="font-size:5px;" title="' . $order->unique_id . '">' . $order->unique_id . '</div>
		</div>
		';
}//end foreach

echo '
                    <div class="ord_entry_last_close"></div>
		</div>
		';
//laatste groep
echo '</div>';


// laatste som orderprijzen/dag
// SOM WEEK ORDER
if ($ref_old != -1)
{
	// weergave som dag:
	if ($this->session->userType == "admin") {
		if ($k >= 0) {
                    echo '<div style="display:table;width:100%;">
                            <div style="display:table-row;">
                                <div class="td" style="width:20px;"></div>
                                <div class="td hdr_sum_day">'.lang('sum').'<sub>'.lang('day').'</sub> = &euro; ' . $this->mygeneric->format_the_money($k) . '</div>
                                <div class="td rechts" style="width:45px;border-top:1px solid #ccc"></div>
                            </div>
                        </div>
                    ';
		}
	
		$l = $l + $k;
		// weergave som week:
		echo '<div style="display:table;width:100%;margin:10px 0 10px 0;background-color:#fff;">
                        <div style="display:table-row;">
                            <div class="td" style="width:40px;"></div>
                            <div class="td hdr_sum_week">'.lang('sum').'<sub>'.lang('week').'</sub> = &euro; ' . $this->mygeneric->format_the_money($l) . '</div>
                        </div>
                    </div>
		';
		
		$m += $l;
		$l = $k = 0;
		
		// weergave som TOTAAL
		$abc2 = $this->mygeneric->format_the_money($m);
		
		if ($j > 0) {
                    $avg_temp = $m / $j;
		} else {
                    $avg_temp = 0;
		}
		$avg = $this->mygeneric->format_the_money($avg_temp);
		
		if ($j === 0) { 
		     $j_temp = 1;
		} else { 
		    $j_temp = $j;
		}
		
		echo '
		<div id="OverviewResultsSummary" style="display:table;width:100%;border:0 solid #aaa;margin-top:0;">
			<div style="display:table-row">
                            <div class="td center" style="font-size:250%;border-top:5px double #333;font-weight:900;width:210px;background-color:#666;color:#fff;padding:5px;">'.lang('sum').'<sub>'.lang('ord_this_overview').'</sub> = &euro; ' . $abc2 . '</div>
			</div>
			<div style="display:table-row;">
                            <div class="td" style="padding:1px 0 0 5px;background-color:#666;color:#f5f5d9;">
                                &#8226; <span class="dik">'.lang('sum').'<sub>orders</sub></span> = <span class="schuin dik" style="margin-right:12px;">'.$j.'</span> 
                                &#8226; <span class="dik">'.lang('sum').'<sub>locaties</sub></span> = <span class="schuin dik" style="margin-right:12px;">'.$i.'</span>
                                &#8226; '.lang('ord_stats_ratio').' '.lang('ord_stats_ratio_loc_per_ad').' = <span class="schuin dik" style="margin-right:12px;">'.round($i/$j_temp, 2).'</span>
                                &#8226; '.lang('ord_stats_avg_cost').' = <span class="schuin dik">'.$avg.'</span>
                            </div>
			</div>
			<div style="display:table-row;">
                            <div class="td" style="padding:0 15px 15px 5px;background-color:#666;color:#f5f5d9;">
                            &#8226; '.lang('ord_stats_pay_terms').' = <span class="schuin dik">'.$n.'</span>
                            <hr noshade />
';

//print_r($q);
		echo '
		<table style="width:100%;" cellpadding="0" cellspacing="0">
            <tr>
                <td></td>
                <td colspan="2" class="dik groot centreren">Totaal orders</td>
		        <td></td>
                <td colspan="2" class="dik groot centreren">Nieuwe orders</td>
		        <td></td>
                <td colspan="2" class="dik groot centreren">Verlengingen</td>
            </tr>
            <tr class="grijs">
                <td></td>
		        
                <td class="centreren">aantal</td>
                <td class="rechts">bedrag (&euro;)</td>
		        
		        <td></td>
		        
                <td class="centreren">aantal</td>
                <td class="rechts">bedrag (&euro;)</td>
		        
		        <td></td>
		        
                <td class="centreren">aantal</td>
                <td class="rechts">bedrag (&euro;)</td>
            </tr>
        ';
		
		$fin_ord_number = $fin_ord_amount = 0;
		$fin_new_orders = $fin_new_amount = 0;
		$fin_pro_orders = $fin_pro_amount = 0;
		
		foreach($q as $user) {
		    
		    $fin_ord_number = $fin_ord_number + $user['orders'];
		    $fin_ord_amount = $fin_ord_amount + $user['sum'];
		    
		    $fin_new_orders = $fin_new_orders + $user['new_orders'];
		    $fin_new_amount = $fin_new_amount + $user['new_sum'];
		    
		    $fin_pro_orders = $fin_pro_orders + $user['prolongated_orders'];
		    $fin_pro_amount = $fin_pro_amount + $user['prolongated_sum'];
		    
		    echo "
            <tr class=\"mo4\" style=\"\">
                <td class=\"schuin dik\">&#8226; {$user['name']}</td>
                
                <td class=\"dik centreren\">{$user['orders']}</span></td>
                <td class=\"schuin dik rechts\">".$this->mygeneric->format_the_money($user['sum']) . "</td>
                
                <td></td>
                
                <td class=\"dik centreren\">{$user['new_orders']}</span></td>
                <td class=\"schuin dik rechts\">".$this->mygeneric->format_the_money($user['new_sum'])."</td>
                
                <td></td>
                
                <td class=\"dik centreren\">{$user['prolongated_orders']}</td>
                <td class=\"schuin dik rechts\">". $this->mygeneric->format_the_money($user['prolongated_sum'])."</td>
            </tr>
";
		}
		
		echo "
            <tr class=\"mo4 \">
                <td colspan=\"9\" style=\"border-top:3px double #aaa\"></td>
            </tr>
            <tr class=\"mo5 groot\" style=\"border-top:3px double #fff\">
                <td class=\"\" ></td>
                
                <td class=\"dik centreren\">". $fin_ord_number ."</span></td>
                <td class=\"dik rechts\">".$this->mygeneric->format_the_money($fin_ord_amount) ."</td>
                
                <td>&nbsp;</td>
                
                <td class=\"dik centreren\">{$fin_new_orders}</span></td>
                <td class=\"dik rechts\">".$this->mygeneric->format_the_money($fin_new_amount)."</td>
                
                <td>&nbsp;</td>
                
                <td class=\"dik centreren\">{$fin_pro_orders}</td>
                <td class=\"dik rechts\">". $this->mygeneric->format_the_money($fin_pro_amount)."</td>
            </tr>
        </table>
        
                        </div>
                    </div>
            <div class=\"center\" style=\"display:inline-block;width:100%;vertical-align:middle;\">
                <span class=\"schuin rose ulink\" style=\"display:inline-flex;\" onclick=\"$('div[id^=r]').toggle()\">= Alle advertenties open/dicht klappen =</span>
                
                <span class=\"rose fade kleiner\" style=\"display:inline-flex;\">
                    <input type=\"checkbox\" value=\"poop\" class=\"q_ord_folding\" id=\"q_ord_folding\" 
onchange=\"if ( $(this).is(':checked') ) { $.cookie('sb_order_view_folds', 1, { expires:99,  path:'/' } ); } else { $.cookie('sb_order_view_folds', 0, { expires:-14, path:'/' } ); } \"
/><label for=\"q_ord_unfold\">default?</label>
                </span>
            </div>
        </div>
    </div>
";

    	//echo "h = {$h}<br/>i_temp = {$i_temp}";
    	
    	}
    }
    
} else {
    echo '<span class="error">' . lang('ord_no_results') .'</span>';
}



echo '
<script type="text/javascript">
$(function() {
';

/*
if (count($orders)>7) {
    echo '
	$("#overviewResultsCopy").html("");
	var summary_results = $("#OverviewResultsSummary").clone();
	$("#overviewResultsCopy").html(summary_results);
';
} else {
    echo '
    $("#overviewResultsCopy").html("");
';
}
*/

echo '
    //Automatically collapse all orders when cookie is set
    var is_ord_collapse = $.cookie("sb_order_view_folds");
    if (is_ord_collapse == 1) {
        $("div[id^=r]").show();
        $( "#q_ord_folding" ).prop("checked", true );
    }

});
</script>
';

?>

Ik zie hier geen query in die iets met de datum doet. Dat zit blijkbaar in je advertentie-model
Heb het even bijgewerkt. In het bestand zit de cronjob.php, query, av_prolongate.php, orders_index_table.php
DATE_ADD(STR_TO_DATE(k.startdatum, '%d-%m-%Y'), INTERVAL MAX(k.looptijd) MONTH) AS expired

Is de kolom startdatum niet van het type DATE?

--
als wel zou ik verwachten dat de verleng-guery gewoon met 1 update gedaan kan worden.
UPDATE tabel
SET einddatum = einddatum + interval tabel.looptijd MONTH
WHERE auto_prolongate = '1' and einddatum = currentdate


OVerigens staat er in de query ook iets met limit 750
heb je die al overschreden?

en wat doen al die verdwaalde GROUP-BY's in je query?
limit 750 geeft aan het aantal weer te geven items in de query.
Group-By is denk ik omdat er gewerkt wordt met 2 verschillende systemen. Zoals ik al zeg heb ik er geen kaas van gegeten.

Nogmaals, er is in de afgelopen 2 jaar niets gewijzigd mbt tot de code. Toch stoppen de automatische verlengingen per de 1e van oktober. en heeft het de 30e van september nog gewoon zo gedraaid.
een cronjob hoort iets te doen.

Ik zie hier vooral een script dat heel veel ophaalt en op het scherm zet.

Een update-query zit er niet bij.
Dat lijkt me het minste wat er moet zijn (of het moet een insert zijn die iets doet, maar die is er ook niet).

Is dit inderdaad het script dat dat doet?
Is er niet een ander script? Of is er een scedueled task binnen Mysql die dit zou moeten doen en nu kapot is (of waarbij mysql dit niet meer "aan" heeft staan in de settings, bijvoorbeeld na een reboot.
Zal ik morgen na moeten kijken. Er draait geen cronjob op de hosting als je dat bedoeld.
Hmm, wat @Ivo zegt, zijn datum-kolommen ook echt van het type DATE? Het feit dat er STR_TO_DATE wordt gebruikt is waarschijnlijk een indicatie dat er iets niet (langer) pluis is.

Je zou eens kunnen kijken hoe cc_koppeltabel_advertentie_sbcompanies.startdatum in je database zit. Mogelijk ging de STR_TO_DATE conversie voorheen goed maar loopt er nu iets spaak nu er datums uit 2020 worden geprikt.

En tevens wat @Ivo zegt, in bovenstaande code staan geen UPDATE queries. Dit wordt, zoals @Ariën ook aanhaalt, mogelijk geregeld in het advertentie_model-model, want daar wordt een methode prolongateAVorders() aangeroepen, die waarschijnlijk het echte werk verricht.

Weet niet hoe zwaar/groot dit systeem is, maar als laatste redmiddel zou je een tijdje queries kunnen loggen zodat je echt kunt zien welke concrete queries worden uitgevoerd.

Heb je toevallig documentatie of aantekeningen (of een soort van WIKI) waarin staat beschreven hoe dit systeem in zijn totaliteit / in grote lijnen werkt, en welke processen (zoals crontabs etc) actief zouden moeten zijn?

Ik hoop ook dat dit systeem zich bedient van database-transacties, want als er queries fout gaan lopen en wijzigingen half worden doorgevoerd omdat deze niet als "batch" worden behandeld (in zijn geheel, of in zijn geheel niet woren uitgevoerd) dan wordt het mogelijk nog een grotere warboel :(.

Reageren