From b7b608c5c503291ac112690616eded299311d956 Mon Sep 17 00:00:00 2001 From: guy Date: Wed, 11 Jan 2012 14:35:26 +0000 Subject: [PATCH] Patch level : 10.0 Files correlati : ha1 Ricompilazione Demo : [ ] Commento : Evitata doppia importazione di incassi da file upload.d git-svn-id: svn://10.65.10.50/branches/R_10_00@22544 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ha/ha1300.cpp | 61 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 21 deletions(-) diff --git a/ha/ha1300.cpp b/ha/ha1300.cpp index de4ed2828..70cd25dd2 100755 --- a/ha/ha1300.cpp +++ b/ha/ha1300.cpp @@ -474,10 +474,10 @@ bool TUpload2Campo::genera_incasso(TPartita& game, int nriga, int nrata, riga.put(PART_NREG, head.get(MOV_NUMREG)); riga.put(PART_NUMRIG, 1); riga.put(PART_DATAREG, head.get(MOV_DATAREG)); + riga.put(PART_DATADOC, head.get(MOV_DATADOC)); riga.put(PART_DATAPAG, head.get(MOV_DATACOMP)); riga.put(PART_CODCAUS, head.get(MOV_CODCAUS)); riga.put(PART_NUMDOC, head.get(MOV_NUMDOC)); - riga.put(PART_DATADOC, head.get(MOV_DATADOC)); riga.put(PART_DESCR, head.get(MOV_DESCR)); // Creo una nuova riga di pagamento assegnado il flag di saldo @@ -744,6 +744,44 @@ void TUpload2Campo::elabora_SI(THardy_upload_recordset& recset, TLog_report& log TString msg; msg << " movimento di incasso. Cliente: " << codcf << " - Agente: " << codice_agente << " - Data: " << data_incasso; + + //panegirico sui conti + //conto cliente + TToken_string key_clifo; + key_clifo.add('C'); + key_clifo.add(codcf); + const TRectype& rec_codcf = cache().get(LF_CLIFO, key_clifo); + int gr_cli = rec_codcf.get_int(CLI_GRUPPO); + int co_cli = rec_codcf.get_int(CLI_CONTO); + TBill zio_clifo(gr_cli, co_cli, codcf ,'C'); + //se il cliente non ha un suo conto, prova con il primo della causale incassi in configurazione + if (zio_clifo.conto() <= 0) + { + caus.bill(1, zio_clifo); + gr_cli = zio_clifo.gruppo(); + co_cli = zio_clifo.conto(); + zio_clifo.set(gr_cli, co_cli, codcf, 'C'); + } + + TPartita game(zio_clifo, annopart, numpart); + for (int r = game.last(); r > 0; r = game.pred(r)) + { + const TRiga_partite& riga = game.riga(r); + if (riga.tipo() == tm_pagamento) + { + const TDate data_riga = riga.get_date(PART_DATAPAG); + const real imp_riga = riga.get_real(PART_IMPORTO); + if (data_riga == data_incasso && imp_riga == incasso) + { + _can_write = false; + msg.insert("Doppio"); + log.log(2, msg); + return; + } + } + } + + if (_can_write) { if (mov.write() != NOERR) @@ -765,25 +803,7 @@ void TUpload2Campo::elabora_SI(THardy_upload_recordset& recset, TLog_report& log log.log(0, msg); } - - //righe - //panegirico sui conti - //conto cliente - TToken_string key_clifo; - key_clifo.add('C'); - key_clifo.add(codcf); - const TRectype& rec_codcf = cache().get(LF_CLIFO, key_clifo); - int gr_cli = rec_codcf.get_int(CLI_GRUPPO); - int co_cli = rec_codcf.get_int(CLI_CONTO); - TBill zio_clifo(gr_cli, co_cli, codcf ,'C'); - //se il cliente non ha un suo conto, prova con il primo della causale incassi in configurazione - if (zio_clifo.conto() <= 0) - { - caus.bill(1, zio_clifo); - gr_cli = zio_clifo.gruppo(); - co_cli = zio_clifo.conto(); - zio_clifo.set(gr_cli, co_cli, codcf, 'C'); - } + //conto agente const TRectype& rec_agente = cache().get(LF_AGENTI, codice_agente); int gr_age = rec_agente.get_int(AGE_GRUPPO); @@ -829,7 +849,6 @@ void TUpload2Campo::elabora_SI(THardy_upload_recordset& recset, TLog_report& log new_rmov_age.put(RMV_IMPORTO, incasso); //crea i pagamenti aggiornando anche la partita (qui si parrą la tua nobilitate!) - TPartita game(zio_clifo, annopart, numpart); const int nriga = game.prima_fattura(); const int nrata = 1; //metodo magicissimo per l'aggiornamento della partita con l'incasso