From 1737696f00551756b808e552c150909692bd3729 Mon Sep 17 00:00:00 2001 From: guy Date: Wed, 16 Feb 2011 14:40:57 +0000 Subject: [PATCH] Patch level : 10.0 934 Files correlati : sc2.exe sc2100a.msk Ricompilazione Demo : [ ] Commento : 0001749: Stampa E/C : se nota di credito non viene considerata nella colonna scaduto Stampa E/C : se nota di credito non viene considerata nella colonna scaduto git-svn-id: svn://10.65.10.50/branches/R_10_00@21653 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- sc/sc2.cpp | 1 - sc/sc2100.cpp | 48 +++++++++++++++++++++++++++++++++--------------- sc/sc2100a.h | 1 + sc/sc2100a.uml | 7 ++++++- 4 files changed, 40 insertions(+), 17 deletions(-) diff --git a/sc/sc2.cpp b/sc/sc2.cpp index 9e0965694..034ed02db 100755 --- a/sc/sc2.cpp +++ b/sc/sc2.cpp @@ -14,6 +14,5 @@ int main(int argc,char** argv) case 5: sc2600(argc,argv); break; // Stampa Prospetto Scadenze default: sc2100(argc,argv); break; // Stampa Estratti conto } - exit(0); return 0; } diff --git a/sc/sc2100.cpp b/sc/sc2100.cpp index ca96587f0..0866132a4 100755 --- a/sc/sc2100.cpp +++ b/sc/sc2100.cpp @@ -71,6 +71,7 @@ class TEC_form : public TForm word _total_rows; // Numero di righe usate per i totali word _maxtot; // Numero massimo di totali da stampare bool _stampa_saldo; // Stampa il saldo di ogni partita + bool _note_scadenti; // Considera scadute le note di credito non assegnate protected: void init_header(const TMask& m); @@ -95,6 +96,7 @@ public: const TDate& data_limite_scaduto() const { return _dls; } int giorni_rischio() const { return _giorni_rischio; } const TDate& data_inizio_rischio() const { return _dir; } + bool note_scadenti() const { return _note_scadenti; } const TString& lingua() const { return _lingua; } bool in_valuta() const { return _in_valuta; } @@ -410,7 +412,7 @@ protected: TImporto* importo_riga_scaduto_ptr(int n) const { return (TImporto*)_scaduto.objptr(n); } TImporto& importo_riga_scaduto(int n); - + bool is_unassigned(const TRiga_partite& row) const; TImporto importo(const TPartita& game, const TRectype& pag, bool valuta) const; static TPartita* _sort_game; @@ -442,7 +444,7 @@ TImporto TEC_array::importo(const TPartita& game, const TRectype& pag, bool valu if (!fat_val) { - imp.valore() += pag.get_real(PAGSCA_RITENUTE); // Sommo le ritenute se sono il lire + imp.valore() += pag.get_real(PAGSCA_RITENUTE); // Sommo le ritenute se sono il Euro const TImporto ritsoc(sum.sezione_ritsoc(), pag.get_real(PAGSCA_RITSOC)); imp += ritsoc; } @@ -450,11 +452,11 @@ TImporto TEC_array::importo(const TPartita& game, const TRectype& pag, bool valu if (pag.get_char(PAGSCA_ACCSAL) == 'S') // Se il pagamento ha abbuoni o differenze cambio { real abb(pag.get(PAGSCA_ABBUONI)); - if (!valuta && fat_val) // Se voglio gli abbuoni in lire ma la fattura non lo e' + if (!valuta && fat_val) // Se voglio gli abbuoni in Euro ma la fattura non lo e' { const TValuta val(sum); // Leggo il cambio dalla riga di partita val.val2lit(abb); // Converto in lire gli abbuoni - abb += pag.get_real(PAGSCA_DIFFCAM); // Sommo l'eventuale differenza cambio (gia' in lire) + abb += pag.get_real(PAGSCA_DIFFCAM); // Sommo l'eventuale differenza cambio (gia' in Euro) } imp.valore() += abb; // Sommo il tutto all'importo base (sez e' uguale per tutti i valori) } @@ -562,6 +564,14 @@ real TEC_array::calcola_scaduto(const TRiga_scadenze& rata, bool valuta) return scaduto_rata.valore(); } +// Determina se una riga pagamento o nota di credito non è associata ad alcuna rata +bool TEC_array::is_unassigned(const TRiga_partite& row) const +{ + const TPartita& game = row.partita(); + const int riga = row.get_int(PART_NRIGA); + return game.esiste(TPartita::UNASSIGNED, TPartita::UNASSIGNED, riga); +} + TEC_row& TEC_array::new_row(const TRiga_partite& row, const TDate& data, const TImporto& imp, int n) { @@ -583,7 +593,7 @@ void TEC_array::add_row(const TRiga_partite& row) if (main_app().has_module(CAAUT)) { - const TString & numregcg = row.get(PART_NREG); + const TString& numregcg = row.get(PART_NREG); const long numreg = atol(_anal.decode(numregcg)); if (numreg > 0) @@ -594,8 +604,7 @@ void TEC_array::add_row(const TRiga_partite& row) for (int i = 1; i <= nrows; i++) { - const TString80 s(anal_mov.row_code(i)); - + const TString80 s = anal_mov.row_code(i); if (s.full() && codanal.find(s) < 0) { if (codanal.full()) @@ -648,6 +657,7 @@ void TEC_array::add_row(const TRiga_partite& row) const TImporto impval(row.importo(true, 0x1)); // Importo pulito senza nient'altro riga.importo_valuta(-impval.valore()); } + riga.codici_analitica(codanal); const int tipo_pag = row.get_int(PART_TIPOPAG); const tipo_movimento tipo_mov = row.tipo(); @@ -671,7 +681,17 @@ void TEC_array::add_row(const TRiga_partite& row) riga.esposto(esposto.valore()); } } - riga.codici_analitica(codanal); + + if (tipo_mov == tm_nota_credito && form().note_scadenti()) + { + const TDate& dls = form().data_limite_scaduto(); + if (data_pag <= dls && is_unassigned(row)) + { + const int nriga = row.get_int(PART_NRIGA); + const TImporto imp = row.importo(in_valuta, 0x1); // Importo pulito senza nient'altro + importo_riga_scaduto(nriga) += imp; + } + } const TImporto abbuoni(row.importo(in_valuta, 0x2)); if (!abbuoni.is_zero()) @@ -964,8 +984,7 @@ void TEC_form::print_total(int riga, const THash_object& o) // Sostituisce magic-names nei prompt TString80 s; - int i; - for (i = 0; i < MAXID; i++) + for (int i = 0; i < MAXID; i++) { TForm_item& desc_field = foot.find_field(f_id[i]); if (desc_field.shown()) @@ -1048,7 +1067,7 @@ void TEC_form::print_total(int riga, const THash_object& o) foot.update(); // Ripristina prompt originari - for (i = 0; i < MAXID; i++) + for (int i = 0; i < MAXID; i++) { const TString* p = (const TString*)prompt.objptr(i); if (p) @@ -1271,8 +1290,7 @@ void TEC_form::set_agente(const TString& codag) if (good) { TString ag; - ag << codag << ' '; - ag << cache().get(LF_AGENTI, codag, AGE_RAGSOC); + ag << codag << ' ' << cache().get(LF_AGENTI, codag, AGE_RAGSOC); if (printing()) { @@ -1281,7 +1299,7 @@ void TEC_form::set_agente(const TString& codag) else { _recordset->new_rec(); - _recordset->set("Descrizione", TVariant(ag)); + _recordset->set("Descrizione", ag); _recordset->new_rec(); } } @@ -1303,6 +1321,7 @@ TEC_form::TEC_form(const TEC_mask& m, bool gesval, bool excel) _dls = m.get(F_DATALIMSC); _giorni_rischio = m.get_int(F_GIORISCH); _dir = _dls; _dir -= _giorni_rischio; + _note_scadenti = m.get_bool(F_NC_SCAD); TForm_item& flags = find_field('H', last_page, PEC_FLAGS); @@ -1315,7 +1334,6 @@ TEC_form::TEC_form(const TEC_mask& m, bool gesval, bool excel) if (oem == 0 && main_app().has_module(CAAUT)) { TForm_item& codanal = _form->find_field('B', odd_page, PEC_ANALITICA); - codanal.show(); } diff --git a/sc/sc2100a.h b/sc/sc2100a.h index 69a95b67f..6b0495bdc 100755 --- a/sc/sc2100a.h +++ b/sc/sc2100a.h @@ -6,6 +6,7 @@ #define F_CODPROF 103 #define F_LINPROF 104 #define F_DESPROF 105 +#define F_NC_SCAD 106 #define F_DATALIMOP 110 #define F_DATALIMSC 111 #define F_GIORISCH 112 diff --git a/sc/sc2100a.uml b/sc/sc2100a.uml index 213a1c934..7be311cd9 100755 --- a/sc/sc2100a.uml +++ b/sc/sc2100a.uml @@ -96,10 +96,15 @@ END NUMBER F_GIORISCH 3 BEGIN - PROMPT 2 6 "Giorni calcolo rischio " + PROMPT 49 5 "Giorni calcolo rischio " GROUP 1 END +BOOLEAN F_NC_SCAD +BEGIN + PROMPT 2 6 "Considera scadute le note di credito non associate ad alcuna rata" +END + BOOLEAN F_STAMPCHIU BEGIN PROMPT 2 7 "Stampa partite chiuse"