BizModel::main_list ( code traitement , date )
-------------------------------------------------
; init & lecture de la liste des stations
1. BizModel::list_Init ( code traitement , date )
; lecture & modélisation du marché national
' TYPE_PARLIST*inter = NULL;
BOUCLE 1->' donnees.var::nbprod
; pour tous les numpdModel existants
; modélise le marché
2. BizModelFortan::modelMarket()
2.1. DAOModel::readMarket( datDebMar , datFinMar , productName , valmarche , nbmreel )
' ((' ? '))
[ SELECT NSE_SALES FROM TNATIONALSALES WHERE NSE_ARTY_CODE=:1 AND NSE_DATE BETWEEN TO_DATE(:2, 'YYYYMMDD') AND TO_DATE(:3, 'YYYYMMDD') ORDER BY NSE_DATE
; init outMarkedValues
[ F::mod_marche ( datDebMar , datFinMar )
<--FIN BOUCLE ' modèles
; efface les données de TTOPTISTA
3. DAOModel::DAODeleteCalData ( inter.liste )
' ((' ? '))
[ DELETE FROM TOPTISTA WHERE TTOA_CODESTATION IN (SELECT MSNL_MSN_STACODE FROM TMANAGEDSTATIONLIST WHERE MSNL_LST_NAME=:1)
[############################################################################################################################################################################]
; -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
; début traitement stations
; (début boucle principale)
; -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[############################################################################################################################################################################]
BOUCLE 1->BizModel::nbstation
; pour toutes les stations
; lecture des compétiteurs et des stations
4. DAOModel::DAOReadListCompetitor ( stationName , tabconc , &nb_conc , libconc , codemarqueconc )
; recovery of competitor station's codes
ITERE ' codecompetitor->competitornumber[codecompetitor<>''] ((' 118 '))
[ SELECT CPR_MSN_STACODE, CPR_STA_CODE, CPR_DISTANCE FROM TCOMPETITOR WHERE CPR_MSN_STACODE= :1
; init board competitor
; recovery of TYPE_TABCONC boardcompetitor's attributs
ITERE ' ((' 562 '))
[ SELECT MSN_STA_CODE FROM TMANAGEDSTATION WHERE MSN_STA_CODE = :1
SI DERNIER
; the competitor station is managed :it s a ELF type s station
4.1. BizModel::DAOReadStation ( bordcompetitor.infoelf , 1)
; retrouve les données des stations
BOUCLE i=0->nbsta
' ((' 172 '))
[ SELECT STA_CODE, STA_NAME, STA_LONGITUDE, STA_LATITUDE, STA_GEO_CODE FROM TSTATION WHERE STA_CODE = codestation
; init station board
<--FIN BOUCLE
; retrouve les données des groupes de stations
ITERE ' ((' 172 '))
[ SELECT GRP_NAME, MSNL_MSN_STACODE FROM TMANAGEDSTATIONLIST, TGROUP WHERE MSNL_LST_NAME = GRP_LST_NAME AND MSNL_MSN_STACODE = :1 AND GRP_ISMAINGROUP = 1
; init stationboard.groupe
SINON
; the competitor station is unmanaged :it s not a ELF type s station
4.2. BizModel::DAOReadCompetitor ( boardcompetitor.infoconc , brd_name )
' ((' ? '))
[ SELECT STA_LONGITUDE, STA_LATITUDE, BRD_NAME, BRD_NUMBER , STA_IS_DISCOUNTER FROM TSTATION , TBRAND WHERE STA_BRD_NAME=BRD_NAME AND STA_CODE = :1
; init infoconc
<--FIN SI
<--FIN ITERE
<--FIN ITERE
SI ' donnees.var::inter.cumul = 1
5. DAOModel::DAOReadCompetitorListTreat ( MAXNBCONC-2 , stationboardModel , nbstation , cumconc , libcumconc )
ITERE ' ((' 117 '))
[ SELECT BRD_NAME, BRD_NUMBER FROM TBRAND WHERE BRD_ISMAIN = '1' ORDER BY BRD_NUMBER
; détection GMS dans le competitor
6. BizModelFortran::detectDiscounter()
[ F::cro_detectgms ( )
; -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
; pour tous les produits du modèle
; -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
BOUCLE 1->' donnees.var::nbprod
; pour tous les produits du modèle
7. DAOModel::DAOReadNationalPrice ( stationName , libelleproduit , datDebStr , t_prixNational )
ITERE ' ((' 709 '))
[ SELECT MAX(TO_CHAR(NPC_APPLICATIONDATE, 'YYYYMMDD')) FROM TNATIONALPRICE , TSTATIONZONE WHERE NPC_ZON_CODE = SZE_ZON_CODE AND SZE_MSN_CODESTA = :1 AND NPC_ARTY_CODE= :2 AND NPC_APPLICATIONDATE<= TO_DATE(:3, 'YYYYMMDD')
; Get last national price before treatment's begin date
ITERE ' ((' ? '))
[ SELECT NPC_PRICE FROM TNATIONALPRICE WHERE NPC_ZON_CODE=SZE_ZON_CODE AND SZE_MSN_CODESTA=:1 AND NPC_ARTY_CODE=:2 AND NPC_APPLICATIONDATE = TO_DATE(:3, 'YYYYMMDD')
SI ' inputDate != inBegDate && inputDate != ""
ITERE ' ((' 708 '))
[ SELECT NPC_PRICE, TO_CHAR(NPC_APPLICATIONDATE, 'YYYYMMDD') FROM TNATIONALPRICE , TSTATIONZONE WHERE SZE_MSN_CODESTA=:1 AND NPC_ZON_CODE = SZE_ZON_CODE AND NPC_ARTY_CODE = :2 AND NPC_APPLICATIONDATE BETWEEN TO_DATE(:3, 'YYYYMMDD') AND TO_DATE(:4, 'YYYYMMDD')
<--FIN SI
ITERE ' ((' 708 '))
[ SELECT NPC_PRICE, TO_CHAR(NPC_APPLICATIONDATE, 'YYYYMMDD') FROM TNATIONALPRICE , TSTATIONZONE WHERE SZE_MSN_CODESTA=:1 AND NPC_ZON_CODE = SZE_ZON_CODE AND NPC_ARTY_CODE = :2 AND NPC_APPLICATIONDATE BETWEEN TO_DATE(:3, 'YYYYMMDD') AND TO_DATE(:4, 'YYYYMMDD')
; init outNationalPrices
SI ' donnees.var::inter.produit = 1
; préparation de l'init des données
8. BizModelFortran::prepareInitialisation ( )
[ F::pre_init ( )
SI ' donnees.var::inter.listhisto = 1 etalors donnees.var::inter.model = 1
9. BizModelFortran::readPreviouslySavedData ( )
; First search last index in table for corresponding article and station
9.1. DAOReadHisto ( productname , stationname , histo , inReadIndex=-1 , 1 )
SI
' ((' ? '))
[ SELECT MAX(MHO_INDEX) FROM TMODELHISTO WHERE MHO_MAE_ARTYCODE=:1 AND MHO_MAE_MSNSTACODE=:2
' > -1
ALORS
ITERE ' ((' ? '))
[ SELECT TO_CHAR(MHO_BEGINDATE,'YYYYMMDD'), TO_CHAR(MHO_ENDDATE,'YYYYMMDD'), MHO_STACODE, MHO_QUALITY, MHO_SENSIBILITY, MHO_AVGECORRECTSALE, MHO_OFFSETCORRECTSALE, MHO_UNIMARGE, MHO_MONTHLYMARG, MHO_IMAGE, MHO_MBUREF,MHO_COEFLINEREF, MHO_COEFLINECONCRT, MHO_COEFLINEMBU, MHO_COEFPROXIREF, MHO_COEFPROXICONCRT,MHO_COEFPROXIMBU, MHO_COEFOFFSET, MHO_COEFGULFWAR, MHO_COEFCROSSARTICLE, MHO_COEFNATIONALMARKET,MHO_COEFIMAGEPOS, MHO_COEFIMAGENEG FROM TMODELHISTO WHERE AND MHO_INDEX = :3
<--FIN SI
TANTQUE
' daoreadhisto = 0
9.2. DAOReadHisto ( productname , stationname , histo , index , 1 ) ' index > 0
ITERE ' ((' ? '))
[ SELECT TO_CHAR(MHO_BEGINDATE,'YYYYMMDD'), TO_CHAR(MHO_ENDDATE,'YYYYMMDD'), MHO_STACODE, MHO_QUALITY, MHO_SENSIBILITY, MHO_AVGECORRECTSALE, MHO_OFFSETCORRECTSALE, MHO_UNIMARGE, MHO_MONTHLYMARG, MHO_IMAGE, MHO_MBUREF,MHO_COEFLINEREF, MHO_COEFLINECONCRT, MHO_COEFLINEMBU, MHO_COEFPROXIREF, MHO_COEFPROXICONCRT,MHO_COEFPROXIMBU, MHO_COEFOFFSET, MHO_COEFGULFWAR, MHO_COEFCROSSARTICLE, MHO_COEFNATIONALMARKET,MHO_COEFIMAGEPOS, MHO_COEFIMAGENEG FROM TMODELHISTO WHERE AND MHO_INDEX = :3
<--FIN TANT QUE
[ F::lis_fictovar( &index )
SI ' donnees.var::inter.prepa = 1
; préparation des données
10. BizModelFortran::readStationData ( interModel->m_sTrtType )
10.1. DAOModel::DAOReadSpecialsDays ( jourspeciaux , inter.fin )
ITERE
[ SELECT TO_CHAR(SPD_DATE, 'YYYYMMDD'), TO_CHAR( NVL(SPD_PREVYEARDATE, SPD_DATE-7), 'YYYYMMDD' ) FROM TSPECIALDAYS WHERE SPD_DATE BETWEEN TO_DATE(:1, 'YYYYMMDD') AND TO_DATE(:2, 'YYYYMMDD')
10.2. BizModelFortran::readReferencePrice ( transprod )
10.2.1. DAOModel::DAOReadReferencePrice ( stationname , innumprod -1 , nbprod , begdate , enddate , tabref , iers , produit , 1 , defaultRound )
10.2.1.1. DAOModel::DAOReadReferenceStation ( inStationCode , stationref , inproduct , innumpd )
ITERE ' ((' 354 '))
[ SELECT MAE_ARTY_CODE, RFZ_TYPE, RFZ_SPECIFICNAME, RFZ_REFZONECODE FROM TREFERENCEZONE, TMANAGEDARTICLE WHERE RFZ_REFZONECODE=MAE_RFZ_REFZONECODE AND MAE_MSN_STACODE = :1 [ AND MAE_ARTY_CODE = :2 ](si inNumProd<>-1)
' ((' 354 '))
[ SELECT TO_CHAR( MAX(RZP_DATEDAILY), 'YYYYMMDD' ) FROM TREFERENCEZONEPRICE WHERE RZP_ARTY_CODE = :1 AND RZP_RFZ_REFZONECODE = :2 AND RZP_DATEDAILY <= TO_DATE(:3, 'YYYYMMDD')
ITERE ' ((' 354 '))
[ SELECT RZP_REFPRICE, TO_CHAR(RZP_DATEDAILY, 'YYYYMMDD') FROM TREFERENCEZONEPRICE WHERE RZP_ARTY_CODE = :1 AND RZP_RFZ_REFZONECODE = :2 AND RZP_DATEDAILY BETWEEN TO_DATE(:3, 'YYYYMMDD') AND TO_DATE(:4, 'YYYYMMDD') ORDER BY RZP_DATEDAILY
10.3. DAOModel::DAOReadCostTable ( productname , stationname , COS_VALUE_TVA , begDate , endDate , tabtva , 0.0 , 0 )
ITERE ' ((' 236 '))
[ SELECT COS_VALUE_TVA , TO_CHAR(COS_DATE , 'YYYYMMDD') FROM TCOST3 WHERE COS_MAE_CODEARTY = :1 AND COS_DATE BETWEEN TO_DATE(:2, 'YYYYMMDD') AND TO_DATE (:3, 'YYYYMMDD') AND COS_MAE_STACODE = :4 ORDER BY COS_DATE
SI ' inter.model == '1' && inter.saison == '0'
10.4. DAOModel::DAOReadBeginModel ( stationname , beginmodel )
ITERE ' ((' ? '))
[ SELECT TO_CHAR(WRK_DATE, 'YYYYMMDD') FROM TWORK WHERE WRK_MSN_STACODE = :1
10.5. BizModelFortran::decodData ( 1 , strttype )
10.5.1. DAOModel::DAOReadDecimal ( stationame , decimal , defaultDecimalNum )
ITERE ' ((' 344 '))
[ SELECT MSN_DECIMALNUMBER, TO_CHAR(MSN_DECIMALNUMBERFROMDATE,'YYYYMMDD'), TO_CHAR(MSN_DECIMALNUMBERTODATE , 'YYYYMMDD') FROM TMANAGEDSTATION WHERE MSN_STA_CODE = :1
10.5.2. DAOModel::DAOReadDataElf ( productname , stationname , begDate , endDate , tabPVElf , nbpvelf , a_vente , inindicmod , ratio , decimal.nb , strttype )
SI ' strtype = 01_FOLLOW
ITERE ' ((' 344 '))
[ SELECT TO_CHAR(ADD_DAILYDATA, 'YYYYMMDD'), ADD_SENTPRICE, ADD_DISPLAYPRICE, ADD_SALES, ADD_CORRECTEDSALES,RUNC(ADD_DAILYDATA)-TO_DATE("+ inBegDate + ", 'YYYYMMDD'), ADD_USERCORSALES FROM TARTICLEDAILYDATA where ADD_MAE_CODEARTY= :1 AND ADD_MAE_CODESTAT=:2 AND ADD_DAILYDATA BETWEEN TO_DATE(:3, 'YYYYMMDD') AND O_DATE(:4, 'YYYYMMDD') AND ( ADD_SENTPRICE<>:5 OR ADD_DISPLAYPRICE<>:6) ORDER BY ADD_DAILYDATA
SINON
ITERE ' ((' ? '))
[ SELECT TO_CHAR(t1.ADD_DAILYDATA, 'YYYYMMDD'),t1.ADD_SENTPRICE, t1.ADD_DISPLAYPRICE, FROM TARTICLEDAILYDATA t1,DECODE (t1.ADD_USERCORSALES,-1,DECODE (t2.ARTY_OPTIMODE, 0, DECODE(t1.ADD_SALES, -1, 0, t1.ADD_SALES),1, DECODE(t1.ADD_SALES, -1, 0,t1.ADD_SALES - DECODE(t1.ADD_SALEREBATEPRICE, -1, 0, t1.ADD_SALEREBATEPRICE)- DECODE(t1.ADD_SALESCALEPRICE, -1, 0, t1.ADD_SALESCALEPRICE))),t1.ADD_USERCORSALES),t1.ADD_CORRECTEDSALES, TRUNC(t1.ADD_DAILYDATA) - TO_DATE( inBegDate , 'YYYYMMDD'), t1.ADD_USERCORSALES FROM TARTICLEDAILYDATA t1, TARTICLETYPE t2 WHERE t1.ADD_MAE_CODEARTY = t2.ARTY_CODE AND t1.ADD_MAE_CODEARTY = :1 AND t1.ADD_MAE_CODESTAT = :2 AND t1.ADD_DAILYDATA BETWEEN TO_DATE( :3, 'YYYYMMDD') AND TO_DATE( :4, 'YYYYMMDD') AND (t1.ADD_SENTPRICE <> :5 OR t1.ADD_DISPLAYPRICE <> :6) ORDER BY t1.ADD_DAILYDATA
<--FIN SI
; pour tous les competitors (conc)
BOUCLE i=0->nb_conc-1
SI ' tabconc.type = C
10.5.3. DAOModel::DAOReadDataComp ( productname , competitor , begdate , enddate , tabpconv , nbpconc , inindicmod )
' ((' 543 '))
[ SELECT TO_CHAR( MAX(ESP_DATE), 'YYYYMMDD' ) FROM TESTIMATEDPRICE WHERE ESP_UMAE_ARTYCODE=:1 AND ESP_DATE<=TO_DATE(:2, 'YYYYMMDD') AND ESP_UMAE_UMSNCODE = :3
ITERE ' ((' 544 '))
[ SELECT ESP_PRICE, TO_CHAR(ESP_DATE, 'YYYYMMDD') FROM TESTIMATEDPRICE WHERE ESP_UMAE_ARTYCODE= :1 AND ESP_UMAE_UMSNCODE=:2 AND ESP_DATE BETWEEN TO_DATE(:3, 'YYYYMMDD') AND TO_DATE(:4, 'YYYYMMDD') ORDER BY ESP_DATE
SINON
10.5.4. DAOModel::DAOReadDecimal ( competitor , decimal , bizModel.defaultDecimalNum )
...
10.5.5. DAOModel::DAOReadDataElf ( productname , competitor , begDate , endDate , tabPCElf , nbpconc , tabSales , inIndicMod , ratio , decimal.nb , strttype )
...
<--FIN SI
<--FIN BOUCLE
SI ' iers = 0
10.6. BizModelFortran::readMaterialAndTaxCost ( )
[ F::lis_prepa(&iers_init, &iers_taxes, &iers_decod, tabtva, (char *)beginModel.c_str())
[ F::pre_decod( &inIndicMod, tabPVElf, tabPConc, &nbPVElf, nbPConc )
SI ' sw_prepaModel = 1
SI ' donnees.var::inter.marge = 1
; calcul des marges
11. BizModelFortran::computeMargin ( )
SI ' sw_prepa = 1
11.1. BizModelFortran::readMargin ( )
[ F::lis_marge ( )
SI ' donnees.var::inter.cumul = 1
12. BizModelFortran::saveProductData ( )
[ F::cum_prepa ( )
<--FIN SI
; préparation des corrections saisonnières
SI ' donnes.var::inter.saison = 1
13. BizModelFortran::initSeasonalAdjustmentCoeff ( )
[ F::cos_init ( )
14. BizModelFortran::computeSeasonalAdjustmentCoeff ( )
BOUCLE i=0->nb_sai
SI ' idebsai[numsai] < (nbjfin - nbjdeb +1
SI ' inter.typsai[i] = '1'
14.1. DaoModel::DAOReadSeasonalShape ( productname , stationname , formesaison )
' ((' ? '))
[ SELECT TO_CHAR(SFM_MONTH1,'MMDD'), TO_CHAR(SFM_MONTH2,'MMDD'), TO_CHAR(SFM_MONTH3,'MMDD'), TO_CHAR(SFM_MONTH4,'MMDD') , TO_CHAR(SFM_AMPLMAY, '9999.000'), TO_CHAR(SFM_AMPLJUNE, '9999.000'), TO_CHAR(SFM_AMPLAUGUST, '9999.000') FROM SEASONNALFORM SFM_MAE_CODEARTY=:1 AND SFM_MAE_CODESTAT=:2
[ F::cos_co1(&idebsai[numsai], &ifinsai[numsai], &numsaif)
<--FIN SI
SI ' inter.typsai[i] = '2'
[ F::cos_co2(&idebsai[numsai], &ifinsai[numsai], &numsaif)
<--FIN SI
<--FIN SI
<--FIN BOUCLE
<--FIN SI
; calcul du modèle
SI ' donnees.var::inter.cumul!=1 etalors donnees.var::inter.model=1
15. BizModelFortran::computeModel ( )
SI ' sw_prepa == 1
15.1. BizModelFortran::initModelComputation ( )
15.1.1. BizModelFortran::DAOReadWork ( stationname , workDate )
' ((' ? '))
[ SELECT TO_CHAR(WRK_DATE, 'YYYYMMDD') FROM TWORK WHERE WRK_MSN_STACODE = :1
[ F::mod_init ((char *)workDate.c_str())
15.2. BizModelFortran::prepareModel ( )
; ssi le modèle n'a pas déjà été calculé
Si ' sw_model != 1
[ F::mod_bouclemod ( )
SI ' recalculmodel = 1
[ F::mod_bouclemod ( )
15.2.1. BizModelFortran::testModel ( 1 )
15.2.1.1. DaoModel::DAOReadHisto ( productname , stationname , histo , -1 , 1 )
TANTQUE ' index>0 && iers = 0
[ F::mod_testmodel (&inSearchType, xFind, &index)
SI ' index > 0
DaoModel::DAOReadHisto ( productnamme , stationname , histo , index , 1 )
<--FIN TANTQUE
15.2.2. BizModelFortran::testModel ( 2 )
...
<--FIN SI
SI ' sw_saison != '1'
15.2.3. DAOModel::DAOReadImage ( productname , stationname , sdate , imagestock )
' ((' ? '))
[ SELECT IMG_VALUE, IMG_AVERAGEPRICE, IMG_AVERAGEBALANPRICE, IMG_AVERAGENATIONSALE , IMG_MAE_CODESTAT=:1 AND IMG_MAE_CODEARTY=:2 AND IMG_DATE=TO_DATE(:3, 'YYYYMM') FROM TIMAGE
[ F::mod_ventem ( ssx, &c_ivalide[numpd - 1], ¶m )
[ F::mod_incprix ( )
[ F::mod_projvar ( ventemodel.incpr[numpd - 1] )
[ F::mod_ventem ( ssx, &c_ivalide[numpd - 1], ¶m)
; insert model sales in database
15.2.4. DAOModel::DAOWriteModelizedSales ( stationname , productname , ventem , sdate , nbrecord , numpd )
15.2.4.1. DAOModel::setMaxIterations ( nbDays )
' ((' ? '))
[ UPDATE TARTICLEDAILYDATA SET ADD_MODELIZEDSALES = :1 WHERE ADD_MAE_CODESTAT = :2 AND ADD_MAE_CODEARTY =:3 AND ADD_DAILYDATA = TO_DATE(:4, 'YYYYMMDD')
SI ' inter.affiche = '1'
15.2.5. DAOModel::DAOWriteImage ( productname , stationname , ... )
[ F::mod_princ ( )
<--FIN SI
<--FIN SI
; safeguard historique
SI ' donnees.var::inter.saison = 1
16. BizModelFortran::writeModelData ( )
[ F::lis_vartofic ( )
SI ' pres_prod != 0
16.1. DAOModel::DAOWriteHisto ( histo , 1 )
' ((' ? '))
[ SELECT MAX(MHO_INDEX) FROM TMODELHISTO WHERE MHO_MAE_ARTYCODE=:1 AND MHO_MAE_MSNSTACODE=:2
' ((' ? '))
[ INSERT INTO TMODELHISTO ( MHO_MAE_ARTYCODE , MHO_MAE_MSNSTACODE , MHO_INDEX , MHO_RECORDINGDATE , MHO_BEGINDATE , MHO_ENDDATE , MHO_QUALITY , MHO_AVGECORRECTSALE , MHO_OFFSETCORRECTSALE , MHO_IMAGE , MHO_SENSIBILITY , MHO_UNIMARGE , MHO_MONTHLYMARG , MHO_MBUREF , MHO_COEFLINEREF, MHO_COEFLINECONCRT, MHO_COEFLINEMBU, MHO_COEFPROXIREF, MHO_COEFPROXICONCRT, MHO_COEFPROXIMBU, MHO_COEFOFFSET, MHO_COEFGULFWAR, MHO_COEFCROSSARTICLE, MHO_COEFNATIONALMARKET, MHO_COEFIMAGEPOS, MHO_COEFIMAGENEG,...) VALUES ( ... )
16.1.1. setMaxParamSize ( x , y )
...
16.1.2. setString ( position , value , size )
...
; corrections saisonnières
SI ' donnees.var::inter.saison = 1
17. BizModelFortran::computeModelisedStates ( )
[ F::cos_calcul ( debcor , fincor )
17.1. DAOModel::DAOWriteCorrectedSalesData ( productname , stationname , debcor , fincor , nbjdeb , numpd -1 , c_prixelf )
BOUCLE i=inBeginCorrId->inEndCorrId
' ((' ? '))
[ SELECT ADD_DISPLAYPRICE, ADD_SENTPRICE FROM TARTICLEDAILYDATA WHERE ADD_MAE_CODEARTY=:1 AND ADD_MAE_CODESTAT=:2 AND ADD_DAILYDATA=TO_DATE(:3, 'YYYYMMDD')
<--FIN BOUCLE
' ((' ? '))
[ INSERT INTO TARTICLEDAILYDATA VALUES ADD_MAE_CODEARTY , ADD_MAE_CODESTAT , ADD_DISPLAYPRICE = :4 , ADD_DAILYDATE = TO_DATE(:4, 'YYYYMMDD') , ADD_CORRECTEDSALES = :5
SI ' indice > 0
' ((' ? '))
[ INSERT INTO TARTICLEDAILYDATA VALUES ADD_MAE_CODEARTY , ADD_MAE_CODESTAT , ADD_DISPLAYPRICE = :4 , ADD_DAILYDATE = TO_DATE(:4, 'YYYYMMDD') , ADD_CORRECTEDSALES = :5 WHERE ADD_MAE_CODEARTY = :2 AND ADD_MAE_CODESTAT=:3 AND ADD_DAILYDATA =TO_DATE(:4, 'YYYYMMDD')
17.1.1. DaoModel::addIteration ( )
...
<--FIN SI
; optimisation marges
SI ' donnees.var::inter.cumul = 1 andalso donnees.var::inter.optim = 1
18. BizModelFortran::marginOptimisation ( )
[ F::lis_optimd ( &error )
SI ' error
18.1. DAOModel::DAOWriteCompetitorBehaviour ( productname , stationame , tabconc , hypconc , nb_conc , numpd -1 )
' ((' ? '))
[ DELETE FROM THYPCOMP WHERE THC_MAE_ARTYCODE = :1 AND THC_MAE_STACODE = :2
' ((' ? '))
[ INSERT INTO THYCOMP VALUES WHERE TTHC_MAE_ARTYCODE = :1 , THC_MAE_STACODE = :2 , THC_CPR_STACODE = :3 , THC_HYPCOMP = :4
SI ' #def EVOMARGEP
18.1.1. DAOModel::DAOReadPrices ( artycode , stacode , datfin )
18.1.1.1. DAOModel::GetLastDateBefore ( datetimeformat , 'TARTICLEDAILYDATA' , 'ADD_DAILYDATE' , indate , [ADD_MAE_CODESTAT,ADD_MAE_CODEARTY] , values )
ITERE ' ((' ? '))
[ SELECT MAX( TO_CHAR( ADD_DAILYDATE , '" + inFormat + "')) FROM TARTICLEDAILYDATA WHERE inDateField + "<= TO_DATE(" + inDateValue + ", '"+ inFormat + "')" AND ADD_MAE_CODESTAT = :1 AND ADD_MAE_CODEARTY = :2
ITERE ' ((' ? '))
[ SELECT ADD_DISPLAYPRICE, ADD_REBATEPRICE, ADD_SCALEPRICE, ADD_SENTPRICE FROM :0 WHERE ADD_DAILYDATA= TO_DATE(:1 , 'YYYYMMDDHH24MISS') AND ADD_MAE_CODEARTY = :2 AND ADD_MAE_CODESTAT = :3
18.1.2. DAOModel::DAOReadSales ( AYEAR , artycode , staCode , datFin )
ITERE ' ((' ? '))
[ SELECT ADD_SALEREBATEPRICE, ADD_SALESCALEPRICE, ADD_SALES, ADD_DAILYDATA FROM TARTICLEDAILYDATA WHERE ADD_DAILYDATA>TO_DATE(:1, 'YYYYMMDD') AND ADD_DAILYDATA<=TO_DATE(:2, 'YYYYMMDD') AND ADD_MAE_CODEARTY=:3 AND ADD_MAE_CODESTAT=:4 ORDER BY ADD_DAILYDATA ASC
18.1.3. BizModelFortran::CalCostPrice ( staCode , artyCode , pcout )
18.1.3.1. DAOModel::DAOReadStation ( &stationatt , 1 )
...
18.1.3.2. DAOArticle::selectAllManagedArticlePrice ( instacode , groupcode )
ITERE ' pBizManagedArticleList
18.1.3.2.1. BizManagedArticle::computeCostingPrice ( indate )
18.1.3.2.1.1. BizCostComponent::computeCostingPrice ( )
<--FIN ITERE
[ F::lis_optimf ( &error , &typOtim , &k )
<--FINSI
<--FIN SI
18.1.3. DAOGroup::selectMainGroup ( stationName )
ITERE ' ((' ? '))
[ SELECT GRP_NAME, GRP_LST_NAME, TO_CHAR(GRP_CREATIONDATE, 'YYYYMMDD'), TO_CHAR(GRP_UPDATEDATE,'YYYYMMDD'), GRP_ISMAINGROUP, GRP_ISDEFAULT, GRP_ISORIGINOFDEFAULTGROUP, GRP_USR_LOGIN, USR_PASSWORD, USR_LASTNAME, USR_FIRSTNAME, TO_CHAR ( USR_UPDATEDATE, 'YYYYMMDD'), USR_ISHUMAN, USR_LANG_CODEISO FROM TGROUP , TMANAGEDSTATIONLIST , TUSER WHERE GRP_ISMAINGROUP='1' AND GRP_LST_NAME=MSNL_LST_NAME AND MSNL_MSN_STACODE=:1 AND GRP_USR_LOGIN=USR_LOGIN
SI ' error
18.1.4. DAOModel::DAOWriteOptim ( resoptim , localGroupName , k , 1 )
' ((' ? '))
[ DELETE FROM TOPTIMIZATION WHERE OPT_MAE_CODEARTY=:1 AND OPT_MAE_CODESTAT=:2 AND OPT_GRP_NAME =:3
...
SI ' nbrecords = 0
ITERE ' ((' ? '))
[ SELECT STA_NAME FROM TSTATION WHERE STA_CODE := 1
<--FIN SI
<--FIN SI
<--FIN SI
<--FIN SI
<--FIN BOUCLE ' produits
; -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
; fin pour tous les produits du modèle
; -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SI ' donnees.var::inter.affdoneap = 1
19. BizModelFortran::importCalculatedData ( date )
BOUCLE numpd=1->=nbprod
19.1. BizModelFortran::list_Calculated ( )
19.2. BizModelFortran::getComment ( )
SI xxx... , BOUCLE ..
19.2.1. DAOModel::DAOReadComment ( commentCode , param , comment )
ITERE ' ((' ? '))
[ SELECT TNS_TRANSLATELABEL FROM TRANSLATE WHERE TNS_CODE=:1 AND TNS_LNG_CODEISO=:2
<--FIN SI , FIN BOUCLE ...
19.3. DAOModel::DAOSavCalData ( opti_sta , indate )
; save calculated datas in database ( inOptiSta )
' ((' ? '))
[ UPDATE OPTISTA SET TTOA_DATE = :1 , TTOA_CODESTATION = :2, TTOA_NAMEARTICLE =:3,TTOA_DISTRIB =:4,TTOA_COEFLINREF =:5,TTOA_COEFPROXREF =:6, TTOA_QUALITY =:7, TTOA_NBCOMPETITORS =:8, TTOA_NAMESCOMP =:9, TTOA_COEFLINREFCOMP =:10, TTOA_COEFPROXREFCOMP =:11, TTOA_PRICETFE =:12, TTOA_MARGINREF =:13, TTOA_PRICEREF =:14,
[ TTOA_IMAGE =:15, TTOA_COMMENT =:16, TTOA_NUMBEROPT =:17, TTOA_SENSIINST =:18, TTOA_SENSIGLOB =:19, TTOA_OFFSETREF =:20, TTOA_OFFSETCOMP =:21, TTOA_COEFLINMBU =:22, TTOA_COEFPROXMBU =:23, TTOA_OPT =:24, TTOA_ECTMIN_EUR =:25, TTOA_ECTMAX_EUR
<--FIN BOUCLE
20. BizModel::list_Resul ( codetreatment , date , '0' )
; écrit les données d'une station ou d'une accumulation de stations
SI ' inter.savresul = '1' && currentDelay.type = 'S' (typeresult == '0' && inter.cumul == '0') || (typeresult == '1' && inter.cumul == '1'))
20.1. BizModel::savpvModel ( codetratment , startdate )
; save datagraph for quadruple key : (codetreatment , articlecode , startdate , dailydata )
; ...
'X' 20.1.1. DAOModel::DAOReadDataGraphCostValue ( modelarticle , nbarticles , cquot , balancedcostingprice , balancedAverageRebateCard , papyrusNetMargin, cardSalesSum , averageCardSales, cashPrice, cashRefPrice, cashCostingPrice, fsOffset, nbdaybegin, nbdayend - nbdaybegin + 1, tabSize, this->nbarticleModel )
...
20.1.2. DAOModel::DAOReadDataGraphNationalPrice ( this->ModelArticle, nationalPrice, nbdaybegin, nbdayend - nbdaybegin + 1, this->nbarticleModel )
...
20.1.3. DAOModel::DAOWriteDataGraph ( codetreatment, datagraph, this->ModelArticle, startdate, nbdaybegin, nbArticles, nbdayend - nbdaybegin + 1, cquot, balancedCostingPrice, balancedAverageRebateCard, papyrusNetMargin, this->nbarticleModel, cardSalesSum, averageCardSales, nationalPrice, cashPrice, fsOffset, cashRefPrice, cashCostingPrice )
...
20.1.4. DAOModel::DAOWriteDataGraphComp ( codetreatment, this->ModelArticle, startdate, dailydata, nbdaybegin, nbCompBrandByArticle, nbArticles, nbdayend - nbdaybegin + 1, nbInsertComp, priceCompetitor, brandNameComp, this->nbarticleModel )
...
<--FIN SI
SI ' inter.savbatch = 1 & typeresult = 0
20.2. DAOModel::DAOSavDelay ( codetreatment , this->currentDelay, this->nbstation )
...
<--FIN SI
SI ' inter.savbatch = 1 & typeresult = 1
20.3. DAOModel::DAOSavDelay ( codetreatment , this->currentDelay, this->nbstation )
...
<--FIN SI
SI ' donnes.var::inter.resultfiche = 1
21. BizModel::list_ResultFile ( )
...
<--FIN BOUCLE ' stations
[############################################################################################################################################################################]
; -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
; fin traitement stations
; (boucle principale)
; -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[############################################################################################################################################################################]
; accumulation des traitements sur toutes les stations
SI ' donnees.var::inter.cumul = 1
22. DAOModel::DAOReadCompetitorListTreat ( MAXNBCONC-2 , stationboardModel , nbstation , cumconc , libcumconc )
...
; pour tous les produits de modèle
BOUCLE 1->nbprod
SI ' donnees.var::inter.produit [ numpdModel - 1 ] = 1
23. BizModelFortran::processDataFromCumulToStation ( )
...
<--FIN BOUCLE
24. BizModel::list_Resul ( codetreatment , date , '1' )
...
<--FIN SI