AANX#26646: 5.3.1. - Onduidelijkheden offertetraject.

svn path=/Website/branches/v5.3.1/; revision=17960
This commit is contained in:
Maykel Geerdink
2013-05-27 08:36:15 +00:00
parent cd85d036ba
commit 0aa73697e7

View File

@@ -292,10 +292,10 @@ mld = {setmeldingstatus:
var sql="";
if (mldstatus_str)
{
// Aantal openstaande opdrachten of offertes (opdracht of offerte doet er niet toe).
// Openstaande opdrachten en offertes hebben de status 10, 3, 4, 5 of 6
// Openstaande offertes hebben de status 10, 3, 4, 5 of 6 als
// Offerte Acceptatie (offerte met een opdracht status 6) ook als open zien
// Aantal openstaande opdrachten of offertes
// Openstaande opdrachten hebben de status 10, 3, 4 of 5.
// Openstaande offertes hebben de status 10, 3, 4, 5 of 6.
// Offerte Acceptatie: offerte met een opdracht status 6 ook als open zien.
var sql_opdr_be_open = " CASE (SELECT COUNT(o.mld_opdr_key)"
+ " FROM mld_opdr o"
+ " WHERE mld_melding_key = m.mld_melding_key)"
@@ -307,22 +307,26 @@ mld = {setmeldingstatus:
+ " AND o.mld_statusopdr_key NOT IN (1, 2, 6, 7, 9))"
+ " END";
// Aantal niet afgemelde offertes.
// a) Aantal offertes die geen status 2 en 6 hebben (Er zijn geen opdrachten) => AND mld_opdr_key > 0
// b) Aantal offertes/opdrachten die geen status 2 en 6 hebben (Er zijn opdrachten van eerdere offertes) => AND mld_opdr_key > MAX(o1.mld_opdr_key)
var sql_offertes_not_afgemeld = " (SELECT COUNT(o.mld_statusopdr_key)"
+ " FROM mld_opdr o"
+ " , mld_typeopdr mo"
+ " WHERE o.mld_typeopdr_key = mo.mld_typeopdr_key"
+ " AND o.mld_melding_key = m.mld_melding_key"
+ " AND mo.mld_typeopdr_isofferte = 1"
+ " AND o.mld_statusopdr_key NOT IN (2, 6)"
+ " AND o.mld_opdr_key > COALESCE ((SELECT MAX(o1.mld_opdr_key)"
+ " FROM mld_opdr o1"
+ " , mld_typeopdr mo1"
+ " WHERE o1.mld_typeopdr_key = mo1.mld_typeopdr_key"
+ " AND mo1.mld_typeopdr_isofferte = 0"
+ " AND o1.mld_melding_key = m.mld_melding_key), 0))";
// Aantal afgeronde(9) offertes.
// Een offerte die afgemelde, afgekeurde, afgewezen of verwerkte wordt veranderd de status van de melding niet.
// Een offerte die afgerond(9) wordt veranderd de status van de melding van "Offerte acceptatie" naar "Offerte geaccepteerd".
// a) Aantal afgeronde(9) offertes (die niet status 1, 2, 6 en/of 7 hebben)
// (Er zijn geen opdrachten) => AND mld_opdr_key > 0
// b) Aantal afgeronde(9) offertes/opdrachten (die geen status 1, 2, 6 en/of 7 hebben)
// (Er zijn opdrachten van eerdere offertes) => AND mld_opdr_key > MAX(o1.mld_opdr_key)
var sql_offertes_afgerond = " (SELECT COUNT(o.mld_statusopdr_key)"
+ " FROM mld_opdr o"
+ " , mld_typeopdr mo"
+ " WHERE o.mld_typeopdr_key = mo.mld_typeopdr_key"
+ " AND o.mld_melding_key = m.mld_melding_key"
+ " AND mo.mld_typeopdr_isofferte = 1"
+ " AND o.mld_statusopdr_key = 9" // AND o.mld_statusopdr_key NOT IN (1, 2, 6, 7)
+ " AND o.mld_opdr_key > COALESCE ((SELECT MAX(o1.mld_opdr_key)"
+ " FROM mld_opdr o1"
+ " , mld_typeopdr mo1"
+ " WHERE o1.mld_typeopdr_key = mo1.mld_typeopdr_key"
+ " AND mo1.mld_typeopdr_isofferte = 0"
+ " AND o1.mld_melding_key = m.mld_melding_key), 0))";
// Is de laatste opdracht bij de melding een offerte?
var sql_last_is_offertes = " COALESCE((SELECT 1"
@@ -379,7 +383,7 @@ mld = {setmeldingstatus:
// En daarnaast geldt:
// Opdrachten: De laatste opdracht is geen offerte.
// Offertes: Offertes met niet afgemelde (6) offertes niet tonen (laatste opdracht is een offerte).
+ " OR ((" + sql_opdr_be_open + " = 0 AND (" + sql_offertes_not_afgemeld + " != 0 OR " + sql_last_is_offertes + " = 0))"
+ " OR ((" + sql_opdr_be_open + " = 0 AND (" + sql_offertes_afgerond + " != 0 OR " + sql_last_is_offertes + " = 0))"
+ " AND (m.mld_melding_status = 4)))";
}
else
@@ -387,7 +391,7 @@ mld = {setmeldingstatus:
// En daarnaast geldt:
// Opdrachten: De laatste opdracht is geen offerte.
// Offertes: Offertes met niet afgemelde (6) offertes niet tonen (laatste opdracht is een offerte).
sql = " AND (" + sql_opdr_be_open + " = 0 AND (" + sql_offertes_not_afgemeld + " != 0 OR " + sql_last_is_offertes + " = 0))"
sql = " AND (" + sql_opdr_be_open + " = 0 AND (" + sql_offertes_afgerond + " != 0 OR " + sql_last_is_offertes + " = 0))"
+ " AND (m.mld_melding_status = 4)";
}
}
@@ -406,14 +410,14 @@ mld = {setmeldingstatus:
// Voor meldingstatus 4 geldt.
// Opdrachten: Er zijn geen opdrachten.
// Offertes: Alle offertes staan ter acceptatie (zijn afgemeld (6)) (laatste opdracht is een offerte)
+ " OR ((" + sql_opdr_be_open + " = -1 OR (" + sql_offertes_not_afgemeld + " = 0 AND " + sql_last_is_offertes + " = 1))"
+ " OR ((" + sql_opdr_be_open + " = -1 OR (" + sql_offertes_afgerond + " = 0 AND " + sql_last_is_offertes + " = 1))"
+ " AND (m.mld_melding_status = 4)))";
}
else
{ // Voor meldingstatus 4 geldt.
// Opdrachten: Er zijn geen opdrachten.
// Offertes: Alle offertes staan ter acceptatie (zijn afgemeld (6)) (laatste opdracht is een offerte)
sql = " AND (" + sql_opdr_be_open + " = -1 OR (" + sql_offertes_not_afgemeld + " = 0 AND " + sql_last_is_offertes + " = 1))"
sql = " AND (" + sql_opdr_be_open + " = -1 OR (" + sql_offertes_afgerond + " = 0 AND " + sql_last_is_offertes + " = 1))"
+ " AND (m.mld_melding_status = 4))";
}
}