From 599002f41572a8f4173a0feb9e095bff1e7e6b52 Mon Sep 17 00:00:00 2001 From: guy Date: Tue, 26 Apr 2011 15:34:21 +0000 Subject: [PATCH] Patch level : 10.0 Files correlati : cg2.exe Ricompilazione Demo : [ ] Commento : Corretta decodifica contropartite di saldaconto per GUIMATRAG git-svn-id: svn://10.65.10.50/branches/R_10_00@22027 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg2100.cpp | 43 ++++++++++++++++++++++++++++++++++--------- cg/cg2102.cpp | 9 +++++++-- cg/cg2102.h | 3 +++ 3 files changed, 44 insertions(+), 11 deletions(-) diff --git a/cg/cg2100.cpp b/cg/cg2100.cpp index 3905f6af0..1490a6565 100755 --- a/cg/cg2100.cpp +++ b/cg/cg2100.cpp @@ -894,6 +894,31 @@ bool TPrimanota_application::test_swap(bool ritsoc) return s; } +void TPrimanota_application::add_cup_or_cig(short id, const TRectype& rec, TToken_string& riga) const +{ + const bool cup = id == CG_CUP; + const TString80 cod = rec.get(cup ? RMV_CUP : RMV_CIG); + if (cod.full()) + { + riga.add(cod, id-FIRST_FIELD); // Tipo di riga 115 o 117 + const TString& desc = cache().get(cup ? "%CUP" : "%CIG", cod, "S0"); + riga.add(desc, (cup ? CG_DCUP : CG_DCIG) - FIRST_FIELD); + } +} + +void TPrimanota_application::add_cup_or_cig(short id, TConfig& ini, TToken_string& riga) const +{ + const bool cup = id == CG_CUP; + const TString80 cod = ini.get(cup ? RMV_CUP : RMV_CIG); + if (cod.full()) + { + riga.add(cod, id-FIRST_FIELD); // Tipo di riga 115 o 117 + const TString& desc = cache().get(cup ? "%CUP" : "%CIG", cod, "S0"); + riga.add(desc, (cup ? CG_DCUP : CG_DCIG) - FIRST_FIELD); + } +} + + int TPrimanota_application::read(TMask& m) { m.reset(); // Azzera campi e relativi dirty = 3 @@ -946,14 +971,14 @@ int TPrimanota_application::read(TMask& m) conto.get(r, true); riga.add(conto.string(0x3)); // Contropartita 110-114 - riga.add(r.get(RMV_CUP), CG_CUP-FIRST_FIELD);// Tipo di riga 115 - riga.add(r.get(RMV_CIG), CG_CIG-FIRST_FIELD);// Tipo di riga 117 + add_cup_or_cig(CG_CUP, r, riga); // CUP 115-116 + add_cup_or_cig(CG_CIG, r, riga); // CIG 117-118 const char tipo = r.get_char(RMV_ROWTYPE); riga.add(tipo, CG_ROWTYPE-FIRST_FIELD); // Tipo di riga 119 disable_cgs_cells(i, tipo); - cgs().check_row(i); + //cgs().check_row(i); // Fare le decodifche a mano: NON USARE! } if (_iva == nessuna_iva && is_fattura()) // Ci dovrebbero essere delle scadenze @@ -961,7 +986,7 @@ int TPrimanota_application::read(TMask& m) pags().reset(); // Azzera sheet rate if (!read_scadenze(m)) // Se non esiste fattura { - const TString dd(m.get(F_DATADOC)); + const TString16 dd = m.get(F_DATADOC); set_pagamento(NULL, dd); // Ignora codice pagamento in testata } } @@ -1822,11 +1847,11 @@ void TPrimanota_application::ini2mask(TConfig& ini, TMask& msk, bool query) ini2bill(ini, conto, true); if (conto.gruppo() > 0) conto.add_to(riga, 9, 0x3); // Contropartita 110-114 - - - riga.add(tipo, cg.cid2index(CG_ROWTYPE)); // Tipo di riga 115 - riga.add(ini.get(RMV_CUP), cg.cid2index(CG_CUP)); // CUP - riga.add(ini.get(RMV_CIG), cg.cid2index(CG_CIG)); // CIG + + add_cup_or_cig(CG_CUP, ini, riga); // CUP 115-116 + add_cup_or_cig(CG_CIG, ini, riga); // CIG 117-118 + + riga.add(tipo, cg.cid2index(CG_ROWTYPE)); // Tipo di riga 119 } if (is_fattura()) diff --git a/cg/cg2102.cpp b/cg/cg2102.cpp index 59d396b9d..fb335bd05 100755 --- a/cg/cg2102.cpp +++ b/cg/cg2102.cpp @@ -327,7 +327,7 @@ void TPrimanota_application::disable_cgs_cells(int n, char tipo) break; first = 2; case 'I': - last = 7; // Imponibile + last = 7; // Imponibile o contropartita saldaconto break; default: last = 0; // Solo contabile @@ -336,10 +336,15 @@ void TPrimanota_application::disable_cgs_cells(int n, char tipo) bool needs_update = false; - if (last) + if (last > first) { for (int i = first; i < last; i++) cg.disable_cell(n, i); + if (first == 0) + { + for (short cc = CG_CUP; cc <= CG_DCIG; cc++) + cg.disable_cell(n, cc - FIRST_FIELD); + } needs_update = true; } diff --git a/cg/cg2102.h b/cg/cg2102.h index ddc12c453..1d07ed613 100755 --- a/cg/cg2102.h +++ b/cg/cg2102.h @@ -253,6 +253,9 @@ protected: bool sub_cgs_imp(int n, const TImporto& importo); void disable_cgs_cells(int n, char tipo); + void add_cup_or_cig(short id, const TRectype& rec, TToken_string& riga) const; + void add_cup_or_cig(short id, TConfig& ini, TToken_string& riga) const; + void add_cgs_rit(bool fisc); void generazione_righe_cg(int r);