From 1de19f9346a36dd5d50656b1817a3a18ffcc1052 Mon Sep 17 00:00:00 2001 From: Simone Palacino Date: Wed, 1 Jul 2020 17:23:56 +0200 Subject: [PATCH] Patch level : 12.0 972 Files correlati : f90.exe d181.des f181.dir/.trr f9ProspIntegr.rep masks f90104.sql Commento : - Rimosso controllo vendite in ogni caso. Incompatibilita' con diverse situazioni tra cui note di credito interne che non sono fatture elettroniche. - Rimosso flag check vendite e il suo utilizzo nel codice. - Aggiornamento stato estrazione solo dopo scrittura f9iva. - Migliorata e resa piu' sicura query per iva aggiungendo tipi diversi e controllo lunghezza colonna. - Corretti nomi campi, che venivano invertiti IVA_ANNPROT e IVA_NUMPROT. - Aggiunto controllo in apertura controllo estrazione solo se il pacchetto e' in errore diag. gest. - Spostata in una classe separata la maschera per l'apertura del pacchetto (Apri estr.). - Corretta modifica f9wa rimaneva vuoto il record in alcuni casi. - Aggiunta possibilita' di esclusione movimenti dall'Apri estr. - Aggiunto controllo esistenza categorie documentali, caricamento cat. doc. di default e controllo tipi documento duplicati. - Aggiunta colonna a F9DRT in caso mancasse (Dovuta a creazione da fp). - Aggiunta funzione provvisoria per calcolo somma imponibili e imposte da rmoviva. --- src/f9/f9lib01.cpp | 8 ++++---- src/f9/f9lib01.h | 2 ++ src/f9/f9lib02.cpp | 32 +++++++++++++++++++++++++------- 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/src/f9/f9lib01.cpp b/src/f9/f9lib01.cpp index 7e30389d0..fb0c08c12 100644 --- a/src/f9/f9lib01.cpp +++ b/src/f9/f9lib01.cpp @@ -269,8 +269,8 @@ bool TEstrazione::is_integr_rev(const int numreg, _Out_ TString& numreg_rev_vend const TCausale& cau = cached_causale(mov.get(MOV_CODCAUS), mov.get_int(MOV_ANNOES)); const TString4 cau_reg = cau.causale_reg_iva(); - TToken_string key(mov.get(MOV_TIPO)); key.add(mov.get_long(MOV_CODCF)); - const long codcli = cache().get(LF_CLIFO, key).get_long(CLI_CODCFASS); + //TToken_string key(mov.get(MOV_TIPO)); key.add(mov.get_long(MOV_CODCF)); + const long numdoc = mov.get_long(MOV_NUMDOC);// cache().get(LF_CLIFO, key); TString query("USE "); query << LF_MOV << " KEY 1 SELECT " << MOV_CODCAUS << "==\"" << cau_reg << "\"\nFROM " << MOV_NUMREG << "==" << numreg; @@ -282,7 +282,7 @@ bool TEstrazione::is_integr_rev(const int numreg, _Out_ TString& numreg_rev_vend TRectype& curr = (TRectype&)mov_rs.cursor()->curr(); const long movcoll_found = curr.get_long(MOV_MOVCOLL); - if ((curr.get_long(MOV_CODCF) == codcli) && ((movcoll_found == 0L) || (movcoll_found == numreg))) + if ((curr.get_long(MOV_NUMDOC) == numdoc) && ((movcoll_found == 0L) || (movcoll_found == numreg))) { movcoll = mov_rs.get(MOV_NUMREG).as_int(); curr.put(MOV_MOVCOLL, numreg); @@ -306,7 +306,7 @@ bool TEstrazione::make_prosp_int_revc(const int numreg, TCategorie_doc::annesso& mov.put(MOV_NUMREG, numreg); mov.read(); TString rev_vend = mov.get(MOV_MOVCOLL); - if(rev_vend.full() || is_integr_rev(numreg, rev_vend)) + if((rev_vend.full() || is_integr_rev(numreg, rev_vend)) && rev_vend != "0") { TF9Prospetto_integr prosp; TString acq; acq << numreg; diff --git a/src/f9/f9lib01.h b/src/f9/f9lib01.h index 558045969..4d5893f08 100644 --- a/src/f9/f9lib01.h +++ b/src/f9/f9lib01.h @@ -541,6 +541,8 @@ class TProspetto_recset final : public TSQL_recordset void precarica_tabelle(); public: + void get_sum_imponibile_imposta(const char* numreg_ven, real& s_imponibili, real& s_imposte); + TProspetto_recset(const char* numreg_acq, const char* numreg_ven); ~TProspetto_recset(); }; diff --git a/src/f9/f9lib02.cpp b/src/f9/f9lib02.cpp index ded4446d5..e2b68e9f0 100644 --- a/src/f9/f9lib02.cpp +++ b/src/f9/f9lib02.cpp @@ -287,6 +287,22 @@ void TProspetto_recset::precarica_tabelle() } } +void TProspetto_recset::get_sum_imponibile_imposta(const char* numreg_ven, real& s_imponibili, real& s_imposte) +{ + TRecord_array iva(LF_RMOVIVA, RMI_NUMRIG); + TRectype* ivafilter = new TRectype(LF_RMOVIVA); + ivafilter->put(RMI_NUMREG, numreg_ven); + iva.read(ivafilter); + s_imponibili = ZERO; + s_imposte = ZERO; + for (int i = iva.first_row(); i <= iva.rows(); ++i) + { + TRectype& r = iva[i]; + s_imponibili += r.get_real("IMPONIBILE"); + s_imposte += r.get_real("IMPOSTA"); + } +} + TProspetto_recset::TProspetto_recset(const char* numreg_acq, const char* numreg_ven) : TSQL_recordset("") { _numreg = new TString; @@ -383,19 +399,21 @@ TProspetto_recset::TProspetto_recset(const char* numreg_acq, const char* numreg_ // Calcolo dal rmoviva real s_imponibili, s_imposte; - TMovimento_contabile movimento_pn; - TBaseisamfile mov(LF_MOV); + /*TMovimento_contabile movimento_pn; + TLocalisamfile mov(LF_MOV); mov.put(MOV_NUMREG, numreg_ven); + mov.read(); if (movimento_pn.read(mov) != NOERR) bool simo = true; s_imponibili = movimento_pn.imponibile(""); - s_imposte = movimento_pn.imposta(""); + s_imposte = movimento_pn.imposta("");*/ - /*TRectype& rec = _movimento_pn->curr(); + /*TMovimentoPN _movimento_pn; + TRectype& rec = _movimento_pn.curr(); rec.put(MOV_NUMREG, numreg_ven); - if (_movimento_pn->read() != NOERR) - bool simo = true; - _movimento_pn->get_sum_imponibile_imposta(s_imponibili, s_imposte);*/ + if (_movimento_pn.read() != NOERR) + bool simo = true;*/ + get_sum_imponibile_imposta(numreg_ven, s_imponibili, s_imposte); format_string(*_totale, TString() << s_imponibili + s_imposte); format_string(*_totimponibile, s_imponibili.stringa());