fixed stat 4
This commit is contained in:
@@ -59,6 +59,12 @@ class MagoSalesStats
|
||||
return "DATE_ADD($z, INTERVAL (" . (int)self::ZIBO_WEEK_END_DAYS . " - WEEKDAY($z)) DAY)";
|
||||
}
|
||||
|
||||
/** Scadenza di testata (usata solo per ordini senza righe). */
|
||||
public static function headerDue($a)
|
||||
{
|
||||
return "COALESCE(" . self::ziboDeadline($a) . ", " . self::clientDate($a) . ", $a.compulsory_delivery_date)";
|
||||
}
|
||||
|
||||
/** Scadenza effettiva di una riga: fine settimana ZIBO, se manca la data cliente. */
|
||||
public static function lineDue($a)
|
||||
{
|
||||
@@ -167,6 +173,18 @@ class MagoSalesStats
|
||||
COALESCE(l.late_lines, 0) AS late_lines,
|
||||
COALESCE(l.late_lines_client, 0) AS late_lines_client,
|
||||
COALESCE(l.week_lines, 0) AS week_lines,
|
||||
-- RITARDO calcolato sulle RIGHE: un ordine è in ritardo solo se ha almeno una riga aperta scaduta.
|
||||
-- (Solo se l'ordine non ha righe si usa la data di testata.)
|
||||
CASE WHEN o.cancelled = 0 AND o.delivered = 0 AND (
|
||||
(COALESCE(l.lines_total, 0) > 0 AND l.late_lines > 0)
|
||||
OR (COALESCE(l.lines_total, 0) = 0 AND " . self::headerDue('o') . " < CURDATE())
|
||||
) THEN 1 ELSE 0 END AS is_late,
|
||||
CASE WHEN o.cancelled = 0 AND o.delivered = 0 AND (
|
||||
(COALESCE(l.lines_total, 0) > 0 AND l.late_lines_client > 0)
|
||||
OR (COALESCE(l.lines_total, 0) = 0 AND " . self::clientDate('o') . " < CURDATE())
|
||||
) THEN 1 ELSE 0 END AS is_late_client,
|
||||
-- scadenza delle sole righe ancora aperte (per il grafico scadenze)
|
||||
CASE WHEN COALESCE(l.lines_total, 0) > 0 THEN l.next_due ELSE " . self::headerDue('o') . " END AS open_due,
|
||||
CASE
|
||||
WHEN o.cancelled = 1 THEN 'annullato'
|
||||
WHEN o.delivered = 1 THEN 'evaso'
|
||||
@@ -250,8 +268,8 @@ class MagoSalesStats
|
||||
'evaso' => "x.status = 'evaso'",
|
||||
'annullato' => "x.status = 'annullato'",
|
||||
'bloccato' => "x.status = 'bloccato'",
|
||||
'ritardo' => "(x.status IN ('aperto','bloccato') AND x.due_date < CURDATE())",
|
||||
'ritardo_cliente' => "(x.status IN ('aperto','bloccato') AND x.client_date < CURDATE())",
|
||||
'ritardo' => "x.is_late = 1",
|
||||
'ritardo_cliente' => "x.is_late_client = 1",
|
||||
'settimana' => "(x.status IN ('aperto','bloccato') AND x.week_lines > 0)", // righe da consegnare questa settimana
|
||||
'da_fatturare' => "(x.delivered = 1 AND x.invoiced = 0 AND x.cancelled = 0)",
|
||||
'fatturato' => "x.invoiced = 1",
|
||||
|
||||
Reference in New Issue
Block a user