From 29f763621aa390b8159cce4f4e490301ae848786 Mon Sep 17 00:00:00 2001 From: guy Date: Tue, 7 Feb 2006 12:17:10 +0000 Subject: [PATCH] Patch level : 2.2 Files correlati : Ricompilazione Demo : [ ] Commento : Migliorata ricerca conto per spese, prestazioni, attrezzature e risorse Tolto velib05 da vedoc, per cui va aggiunto in ve1 e ve7 git-svn-id: svn://10.65.10.50/trunk@13765 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ve/ve0300.cpp | 24 ++------------- ve/ve1100.cpp | 2 +- ve/ve1300.cpp | 4 +-- ve/ve7200.cpp | 2 +- ve/velib.h | 81 ++----------------------------------------------- ve/velib03.cpp | 3 ++ ve/velib04.h | 4 +++ ve/velib04f.cpp | 48 ++++++++++++++--------------- ve/velib05.cpp | 2 +- ve/velib05.h | 79 +++++++++++++++++++++++++++++++++++++++++++++++ 10 files changed, 119 insertions(+), 130 deletions(-) create mode 100755 ve/velib05.h diff --git a/ve/ve0300.cpp b/ve/ve0300.cpp index 68ee136b0..64b48673c 100755 --- a/ve/ve0300.cpp +++ b/ve/ve0300.cpp @@ -11,31 +11,11 @@ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -#ifndef __INCSTR_H -#include -#endif - -#ifndef __CHECKS_H -#include -#endif - -#ifndef __URLDEFID_H -#include -#endif - -#ifndef __SCANNER_H -#include -#endif - -#ifndef __CONFIG_H -#include -#endif - #include +#include #include #include #include -#include #include #include #include @@ -46,6 +26,8 @@ #include "veini.h" #include "ve0100.h" + + // Significato delle colonne nella tabella _tab0300b #define B_NOME 0 #define B_MSKTYPE 1 diff --git a/ve/ve1100.cpp b/ve/ve1100.cpp index 98428212b..17f332f5f 100755 --- a/ve/ve1100.cpp +++ b/ve/ve1100.cpp @@ -9,7 +9,7 @@ #include #include -#include "velib.h" +#include "velib05.h" #include "sconti.h" #include "ve1100.h" diff --git a/ve/ve1300.cpp b/ve/ve1300.cpp index 92342d822..c4efabd82 100755 --- a/ve/ve1300.cpp +++ b/ve/ve1300.cpp @@ -9,7 +9,7 @@ #include #include "ve1100.h" -#include "velib.h" +#include "velib05.h" #include #include @@ -868,4 +868,4 @@ int ve1300(int argc, char* argv[]) TReport_doc_app a; a.run(argc, argv, TR("Stampa documenti")); return (0); -} \ No newline at end of file +} diff --git a/ve/ve7200.cpp b/ve/ve7200.cpp index 026e3669b..06c270d5a 100755 --- a/ve/ve7200.cpp +++ b/ve/ve7200.cpp @@ -3,7 +3,7 @@ #include #include #include -#include "velib.h" +#include "velib05.h" #include "ve7.h" #include "ve7200.h" diff --git a/ve/velib.h b/ve/velib.h index 2f201afa4..b39c31e3d 100755 --- a/ve/velib.h +++ b/ve/velib.h @@ -26,17 +26,13 @@ class TViswin; #endif #ifndef __PRLIB_H -#include "../pr/prlib.h" +class TProvvigioni_agente; #endif #ifndef __MGLIB_H #include "../mg/mglib.h" #endif -#ifndef __COLMASK_H -#include -#endif - #ifndef __DOC_H #include #endif @@ -45,8 +41,6 @@ class TViswin; #include #endif -#include "../cg/cg2101.h" - #define RIGA_MERCE 'M' #define RIGA_SPESEDOC 'S' #define RIGA_PRESTAZIONI 'P' @@ -670,7 +664,7 @@ public: void flush_rows(); TProvvigioni_agente& calc_provvigioni(const bool generata = true); - int write_provvigioni() { return calc_provvigioni().write();} + int write_provvigioni(); char tipo_numerazione() const { return get_char("PROVV"); } int anno() const { return get_int("ANNO"); } @@ -855,75 +849,4 @@ public: virtual ~TDocumento_mask(); }; -struct dec_parm { - int qta_lit; - int qta_val; - // add other groups here -}; - -////////////////////////////////////////////////////////////////////////////////////////////// -// classe TDocumentoEsteso: oggetto che ha come finalita' il calcolo dei riepiloghi IVA -////////////////////////////////////////////////////////////////////////////////////////////// - -class TDocumentoEsteso : public TDocumento -{ - // Parametri del documento - dec_parm _parm; // Parametri per gli arrotondamenti - - // membri per il calcolo del riepilogo IVA - - int _sum_filter; // Filtro corrente della riga TRiepilogo_iva in corso di stampa (-1 se non ha ancora calcolato la tabella) - bool _sum_selected; // true se ha selezionato una riga del riepilogo, funge da semaforo per leggere la prossima - TString_array _order_array; // Array di TToken_string contenenti i codici IVA soddisfacenti ad ogni tipo di filtro - TAssoc_array _summary_table; // Array associativo contenete imonibili ed imposte pronte per la stampa; - TArray _summary_array; // Array dove vengono memorizzate le imposte/imponibili per riga - TRiepilogo_iva _sum_current; // Riga corrente del riepilogo - - // membri per il calcolo del riepilogo scadenze - TString_array _scadenze_array; // Array che contiene le scadenze ("|") - int _scadenze_current; // indice per identificare l'elementi corrente sull'array (-1 se non ha ancora calcolato) - -protected: - virtual int readat(TBaseisamfile& file, TRecnotype nrec, word lockop); - -public: - // Funzioni per il riepilogo IVA - const bool summary_compiled() { return _sum_filter > -1; } - void compile_summary(); // Aggiorna la tabella riepilogativa - void summary_filter(byte selector); // filtra la tabellina secondo il filtro corrente se non e' gia' stato fatto - void summary_reset(bool force=FALSE); // riposiziona l'array dei codici IVA (_order_array). Se il parametro e' true forza il ricalcolo della tabella - void summary_set_next(); // seleziona il prossimo elemento del filtro - const TRiepilogo_iva& sum_current() const { return _sum_current; } // ritorna la riga corrente del filtro corrente - const char * summary_get(const TString& w); // ritorna l'informazione richiesta estratta dall'elemento corrente - int summary_items() { return tabella_iva().items();} // ritorna il numero di righe in totale della tabellina - const TAssoc_array& summary() const { return _summary_table; } - const TArray& summary_array() const { return _summary_array;} - - // Funzioni per il ricalcolo delle scadenze - void scadenze_reset(); // riposiziona sulla prima scadenza - void scadenze_recalc(); // resetta e ricalcola le scadenze - void scadenze_set_next(); // seleziona il prossimo elemento dell'array delle scadenze - const char * scadenze_get(const TString& w); // reperisce l'informazione richiesta dall'elemento corrente - int scadenze_items() { return _scadenze_array.items(); } // restituisce il numero di scadenze - TString_array& scadenze() { return _scadenze_array; } - - // restituisce tot_imponibili, tot_esenti, tot_nonsoggetti a seconda del selettore: - // 1 = regime normale - // 2 = da ventilare (non usato) - // 4 = esenti - // 8 = non imponibili - // 16 = non soggetti - // pertanto i non imponibili avranno selettore 1 e gli esenti selettore 4. - // per avere esenti + non soggetti il selettore sara' 20 e cosi' via. - real tot_imponibili(byte selector); - - // Funzioni per settare i parametri - void set_decimals(dec_parm & parm) { _parm = parm ; } -// void set_condv(TCli_for * cli); // Cambia le condizioni di vendita - TDocumentoEsteso (const TRectype & rec, dec_parm & parm) ; - TDocumentoEsteso (const TRectype & rec) ; - TDocumentoEsteso () ; - virtual ~TDocumentoEsteso(); -}; - #endif \ No newline at end of file diff --git a/ve/velib03.cpp b/ve/velib03.cpp index d303798e7..fb3d49b9f 100755 --- a/ve/velib03.cpp +++ b/ve/velib03.cpp @@ -1375,6 +1375,9 @@ TProvvigioni_agente& TDocumento::calc_provvigioni(const bool generata) return *_provv_agente; } +int TDocumento::write_provvigioni() +{ return calc_provvigioni().write(); } + bool TDocumento::in_valuta() const { const TString& val = valuta(); diff --git a/ve/velib04.h b/ve/velib04.h index 81b963327..7399e4cfe 100755 --- a/ve/velib04.h +++ b/ve/velib04.h @@ -5,6 +5,10 @@ #include "velib.h" #endif +#ifndef __CG2101_H +#include "../cg/cg2101.h" +#endif + #ifndef __CALIB01_H #include "../ca/calib01.h" #endif diff --git a/ve/velib04f.cpp b/ve/velib04f.cpp index 984d50e96..d47c03973 100755 --- a/ve/velib04f.cpp +++ b/ve/velib04f.cpp @@ -84,28 +84,29 @@ bool TContabilizzazione_analitica::search_costo_ricavo(const TRiga_documento& r, } const int items = _search_seq.items(); - TToken_string clifo_key; + TString16 clifo_key; clifo_key.format("%c|%ld", r.doc().get_char(DOC_TIPOCF), r.doc().get_long(DOC_CODCF)); + const TRectype& cli_file = cache().get(LF_CLIFO, clifo_key); + const bool skip_clifo = cli_file.empty(); - const bool is_cli = cli_file.get_char(CLI_TIPOCF) != 'F'; + const bool is_cli = clifo_key[0] != 'F'; bool skip_art_related = false; - bool skip_clifo = cli_file.empty(); const TCodiceIVA codiva(r.get(RDOC_CODIVA)); const char t = r.tipo().tipo(); switch (t) { - case 'O': // righe omaggio come articoli spiaccicato identico (avranno imponibile 0) - case 'M': // righe di merce + case RIGA_OMAGGI: // righe omaggio come articoli spiaccicato identico (avranno imponibile 0) + case RIGA_MERCE: // righe di merce { // posiziona l'anagrafica sull'articolo specificato sulla ..iga const TRectype& anamag = cache().get(LF_ANAMAG, r.get(RDOC_CODARTMAG)); if (anamag.empty()) // se non trova l'articolo saltera' anche gmc,smc,rfa. skip_art_related = true; - TString16 tok; + TString4 tok; // Scorre la stringa di ricerca for (int i=0; i < items;i++) { @@ -119,15 +120,13 @@ bool TContabilizzazione_analitica::search_costo_ricavo(const TRiga_documento& r, conto.set(gr,co,so); if (conto.ok()) break; // se lo trova esce (tutti != 0) - } - else + } else if (tok == "CA") { const TCausale& caus = rdoc2caus(r); if (caus.IVA2bill(codiva,conto)) break; // se lo trova esce - } - else + } else if (tok == "AR") { if (skip_art_related) @@ -150,8 +149,7 @@ bool TContabilizzazione_analitica::search_costo_ricavo(const TRiga_documento& r, } if (conto.ok()) break; - } - else + } else if (tok == "GM" || tok == "SM" || tok == "RF") { if (skip_art_related) @@ -170,8 +168,7 @@ bool TContabilizzazione_analitica::search_costo_ricavo(const TRiga_documento& r, } if (conto.ok()) break; - } - else + } else if (tok == "CV" || tok == "CC") { const bool is_cve = tok == "CV"; @@ -201,11 +198,12 @@ bool TContabilizzazione_analitica::search_costo_ricavo(const TRiga_documento& r, } break; // case 'M' } - case 'P': // righe prestazione - case 'S': // righe spese + case RIGA_SPESEDOC: + case RIGA_PRESTAZIONI: + case RIGA_ATTREZZATURE: + case RIGA_RISORSE: { - const TString80 codspesa = r.get(RDOC_CODART); - const TRectype& tab = cache().get(t == 'P' ? "PRS" : "SPP", codspesa); + const TSpesa_prest tab(r.get(RDOC_CODART), t); if (!tab.empty()) { int gr = tab.get_int(is_cli ? "I0" : "I3"); @@ -221,9 +219,10 @@ bool TContabilizzazione_analitica::search_costo_ricavo(const TRiga_documento& r, } } - if (t == 'P' && !conto.find()) // Cerca il conto nella stringa di ricerca (solo per prestazioni) + // Cerca il conto nella stringa di ricerca (solo per prestazioni) + if (t == RIGA_PRESTAZIONI && !conto.find()) { - TString16 tok; + TString4 tok; // Scorre la stringa di ricerca ma solo per causale o CLI/FO for (int i=0; i|") + int _scadenze_current; // indice per identificare l'elementi corrente sull'array (-1 se non ha ancora calcolato) + +protected: + virtual int readat(TBaseisamfile& file, TRecnotype nrec, word lockop); + +public: + // Funzioni per il riepilogo IVA + const bool summary_compiled() { return _sum_filter > -1; } + void compile_summary(); // Aggiorna la tabella riepilogativa + void summary_filter(byte selector); // filtra la tabellina secondo il filtro corrente se non e' gia' stato fatto + void summary_reset(bool force=FALSE); // riposiziona l'array dei codici IVA (_order_array). Se il parametro e' true forza il ricalcolo della tabella + void summary_set_next(); // seleziona il prossimo elemento del filtro + const TRiepilogo_iva& sum_current() const { return _sum_current; } // ritorna la riga corrente del filtro corrente + const char * summary_get(const TString& w); // ritorna l'informazione richiesta estratta dall'elemento corrente + int summary_items() { return tabella_iva().items();} // ritorna il numero di righe in totale della tabellina + const TAssoc_array& summary() const { return _summary_table; } + const TArray& summary_array() const { return _summary_array;} + + // Funzioni per il ricalcolo delle scadenze + void scadenze_reset(); // riposiziona sulla prima scadenza + void scadenze_recalc(); // resetta e ricalcola le scadenze + void scadenze_set_next(); // seleziona il prossimo elemento dell'array delle scadenze + const char * scadenze_get(const TString& w); // reperisce l'informazione richiesta dall'elemento corrente + int scadenze_items() { return _scadenze_array.items(); } // restituisce il numero di scadenze + TString_array& scadenze() { return _scadenze_array; } + + // restituisce tot_imponibili, tot_esenti, tot_nonsoggetti a seconda del selettore: + // 1 = regime normale + // 2 = da ventilare (non usato) + // 4 = esenti + // 8 = non imponibili + // 16 = non soggetti + // pertanto i non imponibili avranno selettore 1 e gli esenti selettore 4. + // per avere esenti + non soggetti il selettore sara' 20 e cosi' via. + real tot_imponibili(byte selector); + + // Funzioni per settare i parametri + void set_decimals(dec_parm & parm) { _parm = parm ; } +// void set_condv(TCli_for * cli); // Cambia le condizioni di vendita + TDocumentoEsteso (const TRectype & rec, dec_parm & parm) ; + TDocumentoEsteso (const TRectype & rec) ; + TDocumentoEsteso () ; + virtual ~TDocumentoEsteso(); +}; + +#endif