From e080b9f0fca7a12e38631b06034f723c66fbaee3 Mon Sep 17 00:00:00 2001 From: guy Date: Fri, 23 Jun 1995 14:50:07 +0000 Subject: [PATCH] Corretto aggiornamento saldi in prima nota e azzeramento PLM git-svn-id: svn://10.65.10.50/trunk@1499 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg2100.cpp | 21 ++++++--- cg/cg2101.cpp | 4 +- cg/cg3400.cpp | 126 ++++++++++++++++++++++++++++--------------------- cg/cg3400a.uml | 85 ++++++++++++++++----------------- 4 files changed, 128 insertions(+), 108 deletions(-) diff --git a/cg/cg2100.cpp b/cg/cg2100.cpp index 9d2438878..87aba4165 100755 --- a/cg/cg2100.cpp +++ b/cg/cg2100.cpp @@ -846,9 +846,11 @@ int TPrimanota_application::write(const TMask& m) static int lasterr = NOERR; const long numreg = m.get_long(F_NUMREG); - if (numreg > _lastreg) _lastreg = numreg; // Aggiorna ultima registrazione - - mask2rel(m); + if (numreg > _lastreg) _lastreg = numreg; // Aggiorna ultima registrazione libera + + if (lasterr == NOERR) + mask2rel(m); // Altrimenti raddoppia i saldi! + const int err = _rel->write(TRUE); if (err == NOERR) { @@ -857,16 +859,21 @@ int TPrimanota_application::write(const TMask& m) if (iva() != nessuna_iva) { - causale().reg().reread(); // Aggiorna protocollo IVA + causale().reg().reread(); // Aggiorna protocollo IVA if (_is_saldaconto) - write_scadenze(m); + { + if (m.page_enabled(2)) + write_scadenze(m); + } else - if (!m.get_bool(F_SOLAIVA)) + { + if (!m.get_bool(F_SOLAIVA)) { const TString16 causimm(causale().causale_inc_imm()); if (causimm.not_empty()) - genera_incasso(causimm); + genera_incasso(causimm); // Genera incasso immediato } + } } else { diff --git a/cg/cg2101.cpp b/cg/cg2101.cpp index d1509be8e..86f6e1f57 100755 --- a/cg/cg2101.cpp +++ b/cg/cg2101.cpp @@ -12,7 +12,7 @@ #include #include -// Calcola l'anno di esercizio di una data +// Calcola l'anno di esercizio di una data, e se prevesc != NULL calcola anche l'anno precedente // Certified 99% int date2esc(const TDate& d, int* prevesc) { @@ -225,7 +225,7 @@ int TMovimentoPN::registra(bool re, bool force) { TString16 chiave; TString16 attivita(registro.attivita()); attivita.right_just(5, '0'); - chiave << annoiva << attivita << a << format("%02d", date2liq(datareg)); + chiave << annoiva << attivita << a << format("%02d", datareg.month()); plm.put("CODTAB", chiave); if (plm.read() == NOERR) { diff --git a/cg/cg3400.cpp b/cg/cg3400.cpp index ec718ab4d..9b0806f52 100755 --- a/cg/cg3400.cpp +++ b/cg/cg3400.cpp @@ -133,6 +133,7 @@ private: bool _stampa_definitiva; bool _MovGiaStampato; bool _gia_settato_ariportare; + bool _forza_ariportare; bool _nuovo_mese; // Finito il mese ? long _num_rig; real _importo; @@ -189,20 +190,20 @@ public: virtual bool user_create(); virtual bool user_destroy(); - void set_rows (int file, int counter); - int setta_righe_indirizzo(char tipocf, long codcf, int rdesc); - int setta_righe_iva(); - int setta_righe_valuta(int start_riga); - int setta_righe_descr(TParagraph_string&, enum descr); + void set_rows (int file, int counter); + int setta_righe_indirizzo(char tipocf, long codcf, int rdesc); + int setta_righe_iva(); + int setta_righe_valuta(int start_riga); + int setta_righe_descr(TParagraph_string&, enum descr); - void fill_page(int row); - void calcola_iva(); - void init_print(); - bool init_cursor(); + void fill_page(int row); + void calcola_iva(); + void init_print(); + bool init_cursor(); - void init_totals(); - int stampa_intestazione_ditta(); - int set_headers(); + void init_totals(); + int stampa_intestazione_ditta(); + int set_headers(); bool leggi_tabreg(const char * codreg, int annoes); bool controlla_mov_aep(); @@ -216,12 +217,12 @@ public: int set_totali_pagina(int r); void get_dati_ditta (); - const char* get_descr_caus (const char * codcaus); - TRectype& look_com (const char * cod); - const char* get_codiva_des(const char* codiva); - void get_date_aep(int aep, TDate* in, TDate* fin); - void update_totals (char sezione, real& importo); - void set_reg_filter(TMask& m); + const char* get_descr_caus (const char * codcaus); + TRectype& look_com (const char * cod); + const char* get_codiva_des(const char* codiva); + void get_date_aep(int aep, TDate* in, TDate* fin); + void update_totals (char sezione, real& importo); + void set_reg_filter(TMask& m); CG3400_application() {}; virtual ~CG3400_application() {}; @@ -246,9 +247,9 @@ bool CG3400_application::filtra_reg(const TRelation * r) bool CG3400_application::filter_func(const TRelation * r) { - const TRectype& recmov = r->lfile().curr(); - TRectype& recrmov = r->lfile(LF_RMOV).curr(); - const long numreg = recmov.get_long("NUMREG"); + const TRectype& recmov = r->lfile().curr(); + TRectype& recrmov = r->lfile(LF_RMOV).curr(); + const long numreg = recmov.get_long("NUMREG"); // Scarto SEMPRE i provvisori TString16 provvis = recmov.get(MOV_PROVVIS); @@ -547,26 +548,31 @@ void CG3400_application::preprocess_footer() // OPPURE // 2. Sono sull'ultima riga // - if (!_gia_settato_ariportare) - if (_cur->pos() < _cur->items()-1) - { - dt = _tot_dare_progr + _tot_dare_progr_ap; - at = _tot_avere_progr + _tot_avere_progr_ap; - dts = dt.string(REAL_PICTURE); - ats = at.string(REAL_PICTURE); + + const bool riporta = _forza_ariportare || + (!_gia_settato_ariportare && _cur->pos() < _cur->items()-1); + + if (riporta) + { + dt = _tot_dare_progr + _tot_dare_progr_ap; + at = _tot_avere_progr + _tot_avere_progr_ap; + dts = dt.string(REAL_PICTURE); + ats = at.string(REAL_PICTURE); - riga.format ("@b@%dg%s@%dg%c %s @%dg%c @%dg%s", - _stampa_width == 132 ? DARE132-STUMB : DARE198-STUMB, - _nuovo_mese ? "Totale progressivi generali " : "A riportare ", - _stampa_width == 132 ? DARE132-3 : DARE198, - 'D', - (const char *) dts, - _stampa_width == 132 ? DARE132+16 : DARE198+20, - 'A', - _stampa_width == 132 ? AVERE132 : AVERE198, - (const char *) ats); - set_footer (r++, (const char*) riga); - } + riga.format ("@b@%dg%s@%dg%c %s @%dg%c @%dg%s", + _stampa_width == 132 ? DARE132-STUMB : DARE198-STUMB, + _nuovo_mese ? "Totale progressivi generali " : "A riportare ", + _stampa_width == 132 ? DARE132-3 : DARE198, + 'D', + (const char *) dts, + _stampa_width == 132 ? DARE132+16 : DARE198+20, + 'A', + _stampa_width == 132 ? AVERE132 : AVERE198, + (const char *) ats); + set_footer (r++, (const char*) riga); + + _forza_ariportare = FALSE; + } } @@ -866,7 +872,12 @@ void CG3400_application::fill_page(int riga) { TString256 rigas; // char frm[4]; - int r_l = printer().rows_left() - 2; // Tolgo le 2 righe del totale! + int r_l = printer().rows_left() - 2; // Tolgo le 2 righe del totale + if (r_l < 0) + { + r_l += printer().formlen() - 8; // Tolgo la testata + _forza_ariportare = TRUE; + } // Se sono rimaste righe da riempire if (r_l > 0) @@ -1616,7 +1627,7 @@ HIDDEN int date2esc(const TDate& d, int* prevesc) void CG3400_application::set_reg_filter(TMask& m) { TEdit_field& reg = m.efield(CODREG); - reg.browse()->cursor()->set_filterfunction(filtra_reg); + reg.browse()->cursor()->set_filterfunction(filtra_reg); } //----------------------------------------------------------------------- @@ -1638,16 +1649,18 @@ bool CG3400_application::data_a_hndl (TMask_field& f, KEY k) const TDate data_a(f.get()); TString16 dep(data_a.string()); - app().set_reg_filter(m); - if (dep.empty()) return TRUE; const int ae = date2esc(data_a); // Anno esercizio app()._ae = ae; - if (ae == 0) return f.error_box("La data specificata non appartiene a nessun esercizio"); + else + { + m.set(ANNO_ESER, ae); + m.send_key(K_TAB, CODREG); + } } if (k == K_ENTER) @@ -1721,7 +1734,7 @@ bool CG3400_application::data_da_hndl(TMask_field& f, KEY k) // bool CG3400_application::mask_a_cod_reg (TMask_field& f, KEY k) { - if (k == K_TAB || k == K_ENTER) + if (f.to_check(k)) { TMask& m = f.mask(); CG3400_application& a = app(); @@ -1742,7 +1755,7 @@ bool CG3400_application::mask_a_cod_reg (TMask_field& f, KEY k) if (k == K_TAB) // Magari ci ripassa e lo inserisce return TRUE; else // Se e' K_ENTER mi serve davvero - return f.warning_box("Manca il codice registro"); + return f.error_box("Manca il codice registro"); } bool reg_ok = a.leggi_tabreg(reg_cod, a._ae); @@ -1750,14 +1763,15 @@ bool CG3400_application::mask_a_cod_reg (TMask_field& f, KEY k) // Output da qui della descrizione del registro e dell'anno m.set(REG_DESC, a._reg_descr); m.set(ANNO_ESER, a._ae); - - // CHECKTYPE NORMAL abolito! (nella maschera non ho l'anno... - if (!reg_ok) - return f.warning_box("Registro inesistente"); - - if (app()._tipo != 5) - return f.warning_box("Il registro %s per l'anno %d non e' di tipo libro giornale", - (const char *) reg_cod, a._ae); + /* + // CHECKTYPE NORMAL abolito! (nella maschera non ho l'anno... + if (!reg_ok) + return f.warning_box("Registro inesistente"); + + if (app()._tipo != 5) + return f.warning_box("Il registro %s per l'anno %d non e' di tipo libro giornale", + (const char *) reg_cod, a._ae); + */ } return TRUE; } @@ -1903,8 +1917,10 @@ bool CG3400_application::set_print(int) ma.set_handler (CODREG, mask_a_cod_reg); ma.set_handler (DATA_A, data_a_hndl); ma.set_handler (DATA_DA,data_da_hndl); + // set_reg_filter(ma); _pagina_da = 0; // Parto dall'inizio + _forza_ariportare = FALSE; while ((tasto = ma.run()) != K_QUIT) { diff --git a/cg/cg3400a.uml b/cg/cg3400a.uml index afe95d4b3..a30a6d24c 100755 --- a/cg/cg3400a.uml +++ b/cg/cg3400a.uml @@ -1,8 +1,8 @@ #include "cg3400a.h" -PAGE "Stampa Libro Giornale" -1 -1 78 17 +PAGE "Stampa Libro Giornale" -1 -1 78 14 -GROUPBOX DLG_NULL 78 3 +GROUPBOX DLG_NULL 77 3 BEGIN PROMPT 1 0 "" END @@ -14,10 +14,7 @@ BEGIN USE LF_NDITTE KEY 1 CHECKTYPE REQUIRED INPUT CODDITTA F_CODDITTA - DISPLAY "Codice" CODDITTA - DISPLAY "Ragione sociale @50" RAGSOC OUTPUT F_RAGSOC RAGSOC - KEY 1 END STRING F_RAGSOC 50 @@ -26,58 +23,58 @@ BEGIN FLAGS "D" END -STRING CODREG 3 -BEGIN - PROMPT 1 4 "Codice registro " - HELP "Codice del libro giornale da stampare" - USE REG SELECT (I0 = 5) || (I0 = 4) -// INPUT CODTAB[1,4] ANNO_ESER - INPUT CODTAB[5,7] CODREG - DISPLAY "Anno" CODTAB[1,4] - DISPLAY "Codice" CODTAB[5,7] - DISPLAY "Descrizione@50" S0 - DISPLAY "Tipo" I0 -// OUTPUT ANNO_ESER CODTAB[1,4] - OUTPUT CODREG CODTAB[5,7] - OUTPUT REG_DESC S0 -// OUTPUT PAGINA_DA I1 -// OUTPUT DATA_DA D0 -// OUTPUT DATA_A D1 -// CHECKTYPE NORMAL - WARNING "Registro inesistente" - VALIDATE ZEROFILL_FUNC 3 - FLAGS "U" -END - -NUMBER ANNO_ESER 4 -BEGIN - PROMPT 30 5 "Esercizio " - FLAGS "ZH" -END - -STRING REG_DESC 50 -BEGIN -// PROMPT 1 6 "Descrizione " - PROMPT 25 4 "" - FLAGS "D" -END - DATE DATA_DA BEGIN - PROMPT 1 6 "Dalla data " + PROMPT 1 3 "Dalla data " HELP "Stampa i movimenti a partire dalla data specificata" END DATE DATA_A BEGIN - PROMPT 40 6 "Alla data " + PROMPT 40 3 "Alla data " HELP "Stampa i movimenti fino alla data specificata" // VALIDATE DATE_CMP_FUNC >= DATA_DA WARNING "Specificare la data di fine stampa" CHECKTYPE REQUIRED - MESSAGE K_TAB, CODREG END +NUMBER ANNO_ESER 4 +BEGIN + PROMPT 1 5 "Esercizio " + FLAGS "DZ" +END + +STRING CODREG 3 +BEGIN + PROMPT 1 6 "Codice registro " + HELP "Codice del libro giornale da stampare" + USE REG SELECT (I0=5)||(I0=4) + INPUT CODTAB[1,4] ANNO_ESER + INPUT CODTAB[5,7] CODREG + DISPLAY "Anno" CODTAB[1,4] + DISPLAY "Codice" CODTAB[5,7] + DISPLAY "Descrizione@50" S0 + DISPLAY "Tipo" I0 + OUTPUT ANNO_ESER CODTAB[1,4] + OUTPUT CODREG CODTAB[5,7] + OUTPUT REG_DESC S0 +// OUTPUT PAGINA_DA I1 +// OUTPUT DATA_DA D0 +// OUTPUT DATA_A D1 + CHECKTYPE REQUIRED + WARNING "Registro inesistente" +// VALIDATE ZEROFILL_FUNC 3 + FLAGS "UZ" +END + +STRING REG_DESC 50 +BEGIN +// PROMPT 1 7 "Descrizione " + PROMPT 25 5 "" + FLAGS "D" +END + + /* GROUPBOX DLG_NULL 30 4 BEGIN