Patch level : 12.0 1056

Files correlati     :  bs.exe bs0200.uml/cpp

Import da beestore update su riga rigettata
This commit is contained in:
Francesco_Fucarino 2021-04-19 18:15:45 +02:00
parent 2679c8a92e
commit b5b758fef0
3 changed files with 67 additions and 34 deletions

View File

@ -1436,7 +1436,7 @@ void TBeeStore_sync::sync_fatbol(const TDate& dal, const TDate& al)
str << "<=" << date2sql(al); str << "<=" << date2sql(al);
} }
} }
str << "\nORDER BY NumMov,NumRiga"; str << "\nORDER BY CodTestata,NumRiga";
TODBC_recordset docs(str); TODBC_recordset docs(str);
docs.connect(_dsn, _usr, _psw); docs.connect(_dsn, _usr, _psw);
@ -1447,6 +1447,8 @@ void TBeeStore_sync::sync_fatbol(const TDate& dal, const TDate& al)
TString4 tipocf; TString4 tipocf;
TDocumento* doc = nullptr; TDocumento* doc = nullptr;
int contatore = 0; int contatore = 0;
int eccezioni_errori = 0;
TString codpk = "";
for (bool ok = docs.move_first(); ok; ok = docs.move_next()) for (bool ok = docs.move_first(); ok; ok = docs.move_next())
{ {
TToken_string test(docs.get("CodTestata").as_string(), '\\'); TToken_string test(docs.get("CodTestata").as_string(), '\\');
@ -1461,6 +1463,7 @@ void TBeeStore_sync::sync_fatbol(const TDate& dal, const TDate& al)
codcf = atol(wrk); codcf = atol(wrk);
tipocf = docs.get("TipoIntestatario").as_string(); tipocf = docs.get("TipoIntestatario").as_string();
if (tipocf != "C") // verificare if (tipocf != "C") // verificare
tipocf = "F"; tipocf = "F";
@ -1479,46 +1482,65 @@ void TBeeStore_sync::sync_fatbol(const TDate& dal, const TDate& al)
TString tre = test_doc.right(3); TString tre = test_doc.right(3);
const TDate datadoc = docs.get("DataMov").as_date(); const TDate datadoc = docs.get("DataMov").as_date();
TString8 numdoc = docs.get("TipoDocCE").as_string(); TString cod_pk= docs.get("Cod_PK").as_string();
TString8 numdoc = docs.get("NumDoc").as_string();
TString8 tipodoc = docs.get("TipoDocCE").as_string(); TString8 tipodoc = docs.get("TipoDocCE").as_string();
TString origine_dc = docs.get("Origine").as_string(); TString origine_dc = docs.get("Origine").as_string();
TTipo_documento tipo(tipodoc);
const TString8 codcaus = tipo.caus_mov().blank() ? codcausdef : tipo.caus_mov();
//doc = new TDocumento('D', datadoc.year(), numdoc, nd); //meglio usare TDocumento(char provv, int anno, const char* codnum, long numdoc); if (tipodoc.not_empty() && (tipodoc!=" ")) {
doc = new TDocumento('D', datadoc.year(), numdoc, strtol(tre, nullptr, 0));
doc->put(DOC_DATADOC, datadoc); TTipo_documento tipo(tipodoc);
doc->put(DOC_TIPODOC, tipodoc); const TString8 codcaus = tipo.caus_mov().blank() ? codcausdef : tipo.caus_mov();
doc->put(DOC_TIPOCF, tipocf);
doc->put(DOC_CODCF, codcf);
doc->cli2doc();
const TString8 codval = docs.get("CodValuta").as_string(); //doc = new TDocumento('D', datadoc.year(), numdoc, nd); //meglio usare TDocumento(char provv, int anno, const char* codnum, long numdoc);
const real cambio = docs.get("CambioValuta").as_real(); doc = new TDocumento('D', datadoc.year(), tipodoc, strtol(numdoc, nullptr, 0));
const TString asp = docs.get("AspettoBeni").as_string();
const int ncolli = docs.get("NumeroColli").as_int();
doc->put(DOC_CODVAL, codval); doc->put(DOC_DATADOC, datadoc);
doc->put(DOC_CAMBIO, cambio); doc->put(DOC_TIPODOC, tipodoc);
doc->put(DOC_ASPBENI1, asp.sleft(50)); doc->put(DOC_TIPOCF, tipocf);
doc->put(DOC_ASPBENI2, asp.smid(50)); doc->put(DOC_CODCF, codcf);
doc->put(DOC_NCOLLI, ncolli); doc->cli2doc();
doc->put(DOC_CAUSMAG, codcaus);
contatore++; const TString8 codval = docs.get("CodValuta").as_string();
const real cambio = docs.get("CambioValuta").as_real();
const TString asp = docs.get("AspettoBeni").as_string();
const int ncolli = docs.get("NumeroColli").as_int();
// inserire codice pagamento Es. BB02
doc->put(DOC_CODVAL, codval);
doc->put(DOC_CAMBIO, cambio);
doc->put(DOC_ASPBENI1, asp.sleft(50));
doc->put(DOC_ASPBENI2, asp.smid(50));
doc->put(DOC_NCOLLI, ncolli);
doc->put(DOC_CAUSMAG, codcaus);
contatore++;
}
else
{
eccezioni_errori++;
codpk = cod_pk;
TString dserrore = docs.get("DSErrore").as_string();
dserrore << " TipoDocCe assente o invalido";
TString update_str = "";
update_str << "UPDATE tieTBolFat \n SET Errore=1, DSErrore = '" << dserrore << "' \n WHERE cod_pk= '" << codpk << "' ";
TODBC_recordset docs(update_str);
docs.connect(_dsn, _usr, _psw);
docs.exec(update_str);
}
} }
TString8 tipodoc = docs.get("TipoDocCE").as_string();
if (tipodoc.not_empty() && (tipodoc != " ")) {
const int tipoart = docs.get("TipoArticolo").as_int(); const int tipoart = docs.get("TipoArticolo").as_int();
TString4 tiporiga = tipoart == 2 ? "04" : "02"; // inutile per noi TString4 tiporiga = tipoart == 2 ? "04" : "02";
TRectype& rdoc = doc->new_row("01"); TRectype& rdoc = doc->new_row("01");
const TString80 codart = docs.get("CodArticolo").as_string(); const TString80 codart = docs.get("CodArticolo").as_string();
rdoc.put(RDOC_CODART, codart); rdoc.put(RDOC_CODART, codart);
if (tipoart == 2) if (tipoart == 2) //righe libere
{ {
if (cache().get("SPP", codart).not_empty()) if (cache().get("SPP", codart).not_empty())
rdoc.put(RDOC_CODARTMAG, codart); rdoc.put(RDOC_CODARTMAG, codart);
} }
else else //spese servizi e articoli
{ {
if (cache().get(LF_ANAMAG, codart).not_empty()) if (cache().get(LF_ANAMAG, codart).not_empty())
rdoc.put(RDOC_CODARTMAG, codart); rdoc.put(RDOC_CODARTMAG, codart);
@ -1538,8 +1560,9 @@ void TBeeStore_sync::sync_fatbol(const TDate& dal, const TDate& al)
rdoc.put(RDOC_CODMAGC, docs.get("CodMagazDest").as_string().left(5)); rdoc.put(RDOC_CODMAGC, docs.get("CodMagazDest").as_string().left(5));
rdoc.put(RDOC_UMQTA, docs.get("CodUntMis").as_string()); rdoc.put(RDOC_UMQTA, docs.get("CodUntMis").as_string());
rdoc.put(RDOC_QTA, docs.get("Quantita").as_real()); rdoc.put(RDOC_QTA, docs.get("Quantita").as_real());
rdoc.put(RDOC_PREZZO, docs.get("PrzNettoSede").as_real()); // o PrzNettoValuta ?? rdoc.put(RDOC_PREZZO, docs.get("PrzNettoNeg").as_real()); // o PrzNettoValuta ??
/*
real valsconto1(docs.get("Sconto1").as_real()); real valsconto1(docs.get("Sconto1").as_real());
real valsconto2(docs.get("Sconto2").as_real()); real valsconto2(docs.get("Sconto2").as_real());
real valsconto3(docs.get("Sconto3").as_real()); real valsconto3(docs.get("Sconto3").as_real());
@ -1560,18 +1583,24 @@ void TBeeStore_sync::sync_fatbol(const TDate& dal, const TDate& al)
sconto << valsconto3.stringa(6, 2); sconto << valsconto3.stringa(6, 2);
} }
rdoc.put(RDOC_SCONTO, sconto); rdoc.put(RDOC_SCONTO, sconto);
*/
rdoc.put(RDOC_CODIVA, docs.get("CodIva").as_string()); rdoc.put(RDOC_CODIVA, docs.get("CodIva").as_string());
}
if (!pi.add_status()) if (!pi.add_status())
break; break;
} }
save_and_delete_doc(doc); // Salva ultimo documento in sospeso save_and_delete_doc(doc); // Salva ultimo documento in sospeso
str.cut(0); str.cut(0);
str.format(TR("Documenti importati %ld record in %s"), contatore, "tieTBolFat"); str.format(TR("Documenti importati %ld record in %s"), contatore, "tieTBolFat");
_log->log(0, ""); _log->log(0, "");
_log->log(0, str); _log->log(0, str);
if (eccezioni_errori > 0)
{
str.cut(0);
str.format(TR("Errori in importazione %ld record in %s"), eccezioni_errori, "tieTBolFat");
_log->log(0, str);
}
} }
bool TBeeStore_sync::create() bool TBeeStore_sync::create()
@ -1646,8 +1675,12 @@ void TBeeStore_sync::main_loop()
sync_carscar(dal, al); sync_carscar(dal, al);
if (mask.get_bool("SyncGenerici")) if (mask.get_bool("SyncGenerici"))
sync_generici(dal, al); sync_generici(dal, al);
const TDate dalfat = mask.get_date("SyncDateFromF");
const TDate alfat = mask.get_date("SyncDateToF");
if (mask.get_bool("SyncFatBol")) if (mask.get_bool("SyncFatBol"))
sync_fatbol(dal, al); sync_fatbol(dalfat, alfat);
_log->preview(); _log->preview();
delete _log; delete _log;

View File

@ -132,7 +132,7 @@ END
ENDPAGE ENDPAGE
PAGE "BeeStore Import:Fatt/Boll/Scon" 0 2 0 0 PAGE "Import: Bolle/Fatture/Scontr." 0 2 0 0
GROUPBOX DLG_NULL 78 4 GROUPBOX DLG_NULL 78 4
BEGIN BEGIN

View File

@ -5,9 +5,9 @@ Module = bs
Flags = "F" Flags = "F"
Item_01 = "Configurazione", "bs0 -0", "F", 9015 Item_01 = "Configurazione", "bs0 -0", "F", 9015
Item_02 = "Sincronizzazione", "bs0 -1", "F", 9015 Item_02 = "Sincronizzazione", "bs0 -1", "F", 9015
Item_02 = "BeeStore Importazione Fatture", "bs0 -1", "F", 9015 Item_03 = "BeeStore Importazione Fatture", "bs0 -1", "F", 9015
Item_02 = "SKNET Importer", "bs0 -2", "F", 9015 Item_04 = "SKNET Importer", "bs0 -2", "F", 9015
Item_03 = "Tabelle di conversione", [BSMENU_002] Item_05 = "Tabelle di conversione", [BSMENU_002]
[BSMENU_002] [BSMENU_002]
Caption = "Tabelle di conversione" Caption = "Tabelle di conversione"