diff --git a/ha/ha1200.cpp b/ha/ha1200.cpp index b270068a6..42a465bae 100755 --- a/ha/ha1200.cpp +++ b/ha/ha1200.cpp @@ -206,7 +206,8 @@ void TFile2Txt::genera_clienti_txt(const long da_codcli) codage = codage.right(3); clienti.set("CodiceTerminale", codage); - clienti.set("CodiceCliente", archivio_clienti.get(CLI_CODCF)); + const long codcf = archivio_clienti.get(CLI_CODCF).as_int(); + clienti.set("CodiceCliente", codcf); //riempie l'anagrafica del cliente principale fill_anagrafica_cliente(archivio_clienti, clienti, false); @@ -231,7 +232,8 @@ void TFile2Txt::genera_clienti_txt(const long da_codcli) TString4 codpag = archivio_clienti.get(CLI_CODPAG).as_string(); clienti.set("CodicePagamento", codpag.right(2)); - TString query; + //prima moda: nel campo CodiceListino ci va il codice Campo del Contratto del cliente (listino cliente per Hardy) + /*TString query; query << "USE CONDV"; query << "\nFROM TIPO=C TIPOCF=C CODCF=#CODCF"; query << "\nTO TIPO=C TIPOCF=C CODCF=#CODCF"; @@ -242,8 +244,14 @@ void TFile2Txt::genera_clienti_txt(const long da_codcli) { const TString& cod_contr = contratti.get(CONDV_COD).as_string(); clienti.set("CodiceListino", cod_contr); - } + }*/ + //seconda moda: nel campo CodiceListino ci va il codice del Listino Campo associato al cliente in cfven + TToken_string key_cfven; + key_cfven.add("C"); + key_cfven.add(codcf); + const TRectype& rec_cfven = cache().get(LF_CFVEN, key_cfven); + const TString& listino_cliente = rec_cfven.get(CFV_CODLIST); const TString& str_sconto = archivio_clienti.get(CFV_SCONTO).as_string(); clienti.set("ScontoFineFattura", hd_find_sconto(str_sconto)); @@ -268,7 +276,7 @@ void TFile2Txt::genera_clienti_txt(const long da_codcli) s='S'; clienti.set("NoConsegna", TVariant(s));*/ - } + } //for (bool ok = archivio_clienti.move_first()... TFilename output_path = genera_path("clienti"); clienti.save_as(output_path, fmt_text); diff --git a/ha/ha1300.cpp b/ha/ha1300.cpp index 83327fc6b..8e988d251 100755 --- a/ha/ha1300.cpp +++ b/ha/ha1300.cpp @@ -307,7 +307,11 @@ void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log codice_terminale.right_just(3, '0'); TString8 codice_agente = codice_terminale; codice_agente.right_just(5, '0'); - const TString& codage = cache().get(LF_AGENTI, codice_agente, AGE_CODAGE); + + const TRectype& rec_age = cache().get(LF_AGENTI, codice_agente); + const TString& codage = rec_age.get(AGE_CODAGE); + const TString8 codmag = rec_age.get(AGE_CODMAG); //magazzino collegato all'agente (serve nelle righe) + if (codage != codice_agente) { _can_write = false; @@ -325,16 +329,16 @@ void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log const int giorno = atoi(str_datadoc.left(2)); - const char rec_tipodoc = recset.get(DOC_TIPODOC).as_string()[0]; + char rec_tipodoc = recset.get(DOC_TIPODOC).as_string()[0]; //2a) tipo documento TString4 tipodoc; TConfig hardy(CONFIG_DITTA, "ha"); switch (rec_tipodoc) { - case 'F': tipodoc = hardy.get("InpFatTip"); break; - case 'B': tipodoc = hardy.get("InpBolTip"); break; - case 'V': tipodoc = hardy.get("InpValTip"); break; - case 'O': tipodoc = hardy.get("InpOrdTip"); break; + case 'F': tipodoc = hardy.get("InpFatTip"); break; //Fatture + case 'B': tipodoc = hardy.get("InpBolTip"); break; //Bolle + case 'V': tipodoc = hardy.get("InpValTip"); break; //bolle Valorizzate: attenzione!! devono essere trasformate in 'B'olle alla creazione della numerazione di Campo + case 'O': tipodoc = hardy.get("InpOrdTip"); break; //Ordini default: { _can_write = false; @@ -347,6 +351,9 @@ void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log //2b) numerazione documento //il codnum dipende dal tipo documento del terminale (F,B,O...) e dal codice del terminale TString4 codnum; + if (rec_tipodoc == 'V') + rec_tipodoc = 'B'; + codnum << rec_tipodoc << codice_terminale; const TString& numerazione = cache().get("%NUM", codnum, "CODTAB"); if (numerazione != codnum) @@ -361,12 +368,17 @@ void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log TDocumento doc('D', anno, codnum, ndoc); + //2c) tipo documento e data documento doc.put(DOC_TIPODOC, tipodoc); + TTipo_documento td(tipodoc); + const TString& caus_movmag = td.caus_mov(); + doc.put(DOC_CAUSMAG, caus_movmag); + TDate datadoc(giorno, mese, anno); doc.put(DOC_DATADOC, datadoc); + + //2d) cliente e campi collegati via cli2doc() doc.put(DOC_TIPOCF, "C"); - - //2c) cliente const long codcf = recset.get(DOC_CODCF).as_int(); TToken_string key_clifo; key_clifo.add("C"); @@ -379,6 +391,7 @@ void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log msg << "Codice cliente " << codcf << " sconosciuto"; log.log(2, msg); } + doc.put(DOC_CODCF, codcf); doc.put(DOC_CODCFFATT, recset.get(DOC_CODCFFATT).as_int()); //sconto in fattura, sconto totale, incasso ecc.... che cazzo sono? @@ -386,6 +399,10 @@ void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log doc.put(DOC_CODPAG, recset.get(DOC_CODPAG).as_string()); //data spedizione...datapart o datacons? (solo per ordini) + //usa la cli2doc per riempire tutti i campi legati al cliente + TCli_for clifor('C', codcf); + clifor.cli2doc(doc); + //al simpatico documento appiccia tutte le righe RF che seguono il record TF.. //..dopo il magico ordinamento iniziale del recordset //intanto azzera le righe eventualmente già presenti (riscrittura) @@ -487,6 +504,8 @@ void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log rigadoc.put(RDOC_CODIVA, codiva); rigadoc.put(RDOC_LIVELLO, recset.get("CodiceLotto").as_string()); + + rigadoc.put(RDOC_CODMAG, codmag); //questo viene dall'agente ed è stato preso all'inizio del metodo } //incredibilmente arriva in fondo @@ -588,8 +607,6 @@ void TUpload2Campo::elabora(const TMask& mask) break; } //switch(pos).. - - } //for (bool ok... log.preview();