diff --git a/vfp/sync-comenzi-web.prg b/vfp/sync-comenzi-web.prg index 1e925f4..054876e 100644 --- a/vfp/sync-comenzi-web.prg +++ b/vfp/sync-comenzi-web.prg @@ -201,18 +201,20 @@ Endfunc *-- Procesare comanda web - logeaza O SINGURA LINIE per comanda *-- Format: [N/Total] OrderNumber P:PartnerID A:AddrFact/AddrLivr -> OK/ERR details +*-- NOTA: VFP nu permite RETURN in TRY/CATCH, se foloseste flag llContinue Function ProcessWebOrder Lparameters loOrder, tnIndex, tnTotal Local llSuccess, lcOrderNumber, lcOrderDate, lnPartnerID, lcArticlesJSON - Local lcSQL, lnResult, lcErrorDetails, lnIdComanda, llSucces + Local lcSQL, lnResult, lcErrorDetails, lnIdComanda Local ldOrderDate, loError Local lnIdAdresaFacturare, lnIdAdresaLivrare - Local lcPrefix, lcSummary, lcErrDetail + Local lcPrefix, lcSummary, lcErrDetail, llContinue lnIdAdresaLivrare = NULL lnIdAdresaFacturare = NULL lnIdComanda = 0 - llSucces = .T. + llSuccess = .F. + llContinue = .T. lnPartnerID = 0 lcOrderNumber = "?" @@ -223,59 +225,63 @@ Function ProcessWebOrder *-- Validare comanda If !ValidateWebOrder(loOrder) LogMessage(lcPrefix + " ? -> ERR VALIDARE: date obligatorii lipsa", "ERROR", gcLogFile) - Return .F. + llContinue = .F. Endif *-- Extragere date comanda - lcOrderNumber = CleanWebText(Transform(loOrder.Number)) - lcOrderDate = ConvertWebDate(loOrder.Date) - ldOrderDate = String2Date(m.lcOrderDate, 'yyyymmdd') - lcPrefix = lcPrefix + " " + lcOrderNumber + If llContinue + lcOrderNumber = CleanWebText(Transform(loOrder.Number)) + lcOrderDate = ConvertWebDate(loOrder.Date) + ldOrderDate = String2Date(m.lcOrderDate, 'yyyymmdd') + lcPrefix = lcPrefix + " " + lcOrderNumber - *-- Procesare partener - gcStepError = "" - lnPartnerID = ProcessPartner(loOrder.billing) - If lnPartnerID <= 0 - LogMessage(lcPrefix + " -> ERR PARTENER: " + Iif(Empty(gcStepError), "nu s-a putut procesa", gcStepError), "ERROR", gcLogFile) - Return .F. + *-- Procesare partener + gcStepError = "" + lnPartnerID = ProcessPartner(loOrder.billing) + If lnPartnerID <= 0 + LogMessage(lcPrefix + " -> ERR PARTENER: " + Iif(Empty(gcStepError), "nu s-a putut procesa", gcStepError), "ERROR", gcLogFile) + llContinue = .F. + Endif Endif - *-- Adrese - lnIdAdresaFacturare = ProcessAddress(m.lnPartnerID, loOrder.billing) - If Type('loOrder.shipping') = 'O' - lnIdAdresaLivrare = ProcessAddress(m.lnPartnerID, loOrder.shipping) - Endif + *-- Adrese + JSON articole + If llContinue + lnIdAdresaFacturare = ProcessAddress(m.lnPartnerID, loOrder.billing) + If Type('loOrder.shipping') = 'O' + lnIdAdresaLivrare = ProcessAddress(m.lnPartnerID, loOrder.shipping) + Endif - *-- Construire JSON articole - lcArticlesJSON = BuildArticlesJSON(loOrder.items) - If Empty(m.lcArticlesJSON) - LogMessage(lcPrefix + " P:" + Transform(lnPartnerID) + " -> ERR JSON_ARTICOLE", "ERROR", gcLogFile) - Return .F. + lcArticlesJSON = BuildArticlesJSON(loOrder.items) + If Empty(m.lcArticlesJSON) + LogMessage(lcPrefix + " P:" + Transform(lnPartnerID) + " -> ERR JSON_ARTICOLE", "ERROR", gcLogFile) + llContinue = .F. + Endif Endif *-- Import comanda in Oracle - lcSQL = "BEGIN PACK_IMPORT_COMENZI.importa_comanda(?lcOrderNumber, ?ldOrderDate, ?lnPartnerID, ?lcArticlesJSON, ?lnIdAdresaLivrare, ?lnIdAdresaFacturare, ?goSettings.IdPol, ?goSettings.IdSectie, ?@lnIdComanda); END;" - lnResult = SQLExec(goConnectie, lcSQL) + If llContinue + lcSQL = "BEGIN PACK_IMPORT_COMENZI.importa_comanda(?lcOrderNumber, ?ldOrderDate, ?lnPartnerID, ?lcArticlesJSON, ?lnIdAdresaLivrare, ?lnIdAdresaFacturare, ?goSettings.IdPol, ?goSettings.IdSectie, ?@lnIdComanda); END;" + lnResult = SQLExec(goConnectie, lcSQL) - *-- Construire linie sumar cu ID-uri adrese - lcSummary = lcPrefix + " P:" + Transform(lnPartnerID) + ; - " A:" + Transform(Nvl(lnIdAdresaFacturare, 0)) + "/" + Transform(Nvl(lnIdAdresaLivrare, 0)) + lcSummary = lcPrefix + " P:" + Transform(lnPartnerID) + ; + " A:" + Transform(Nvl(lnIdAdresaFacturare, 0)) + "/" + Transform(Nvl(lnIdAdresaLivrare, 0)) - If lnResult > 0 And Nvl(m.lnIdComanda, 0) > 0 - LogMessage(lcSummary + " -> OK ID:" + Transform(m.lnIdComanda), "INFO", gcLogFile) - Return .T. - Else - lcErrorDetails = GetOracleErrorDetails() - lcErrDetail = ClassifyImportError(lcErrorDetails) - CollectFailedSKUs(lcErrorDetails) - LogMessage(lcSummary + " -> ERR " + lcErrDetail, "ERROR", gcLogFile) - Return .F. + If lnResult > 0 And Nvl(m.lnIdComanda, 0) > 0 + LogMessage(lcSummary + " -> OK ID:" + Transform(m.lnIdComanda), "INFO", gcLogFile) + llSuccess = .T. + Else + lcErrorDetails = GetOracleErrorDetails() + lcErrDetail = ClassifyImportError(lcErrorDetails) + CollectFailedSKUs(lcErrorDetails) + LogMessage(lcSummary + " -> ERR " + lcErrDetail, "ERROR", gcLogFile) + Endif Endif Catch To loError LogMessage(lcPrefix + " -> ERR EXCEPTIE: " + loError.Message, "ERROR", gcLogFile) - Return .F. Endtry + + Return llSuccess Endfunc *-- Validare comanda web