From 3b7767ab90f762a0adadf8988860adab22ec84cf Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 3 Jun 1997 10:29:42 +0000 Subject: [PATCH] Lettere di esenzione Livelli digiacenza (da terminare) git-svn-id: svn://10.65.10.50/trunk@4498 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ve/batbtip.h | 1 + ve/batbtip.uml | 12 +- ve/bollac.src | 27 +-- ve/bollaf.src | 16 +- ve/f34.dir | 2 +- ve/f34.trr | 51 ++--- ve/fatturaa.src | 22 +- ve/fatturac.src | 22 +- ve/ve0100.cpp | 75 ++++--- ve/ve0100.h | 9 +- ve/ve0100a.uml | 35 ++-- ve/ve0200.cpp | 48 ++--- ve/ve0200a.uml | 18 +- ve/ve0200b.uml | 2 +- ve/ve0200c.uml | 4 +- ve/ve0200d.uml | 2 +- ve/ve0200e.uml | 2 +- ve/ve0200f.uml | 79 +++++-- ve/ve0300.cpp | 44 ++-- ve/ve0300b.dat | 6 +- ve/ve0300c.ini | 2 +- ve/ve1100.cpp | 19 +- ve/veconf.h | 11 +- ve/velib01.cpp | 541 ++++++++++++++++++++++++++++++++++++++++++------ ve/velib01.h | 114 +++++++++- ve/velib02.cpp | 8 +- ve/velib02.h | 4 +- ve/verig.h | 56 ++--- ve/verig.uml | 85 +++++++- ve/verig01.ini | 1 - ve/verig02.ini | 1 - ve/verig03.ini | 1 - ve/verig04.ini | 1 - ve/verig05.ini | 1 - ve/verig06.ini | 1 - ve/verig07.ini | 1 - ve/verig08.ini | 1 - ve/verig09.ini | 1 - ve/verig09.uml | 60 +++--- 39 files changed, 1032 insertions(+), 354 deletions(-) diff --git a/ve/batbtip.h b/ve/batbtip.h index af04a1fc8..3c4993c92 100755 --- a/ve/batbtip.h +++ b/ve/batbtip.h @@ -7,3 +7,4 @@ #define F_NCOPIE 107 #define F_RIFERIMENTO 108 #define F_SPESEAUT 109 +#define F_TIPO 110 diff --git a/ve/batbtip.uml b/ve/batbtip.uml index 9ea51104d..348efbc3a 100755 --- a/ve/batbtip.uml +++ b/ve/batbtip.uml @@ -103,7 +103,17 @@ BEGIN PROMPT 2 15 "Addebito automatico spese cliente" FIELD B0 END -ENDPAGE +LIST F_TIPO 10 +BEGIN + PROMPT 2 17 "Tipo del documento " + FIELD I1 + ITEM "0|Altro" + ITEM "1|Fattura" + ITEM "2|Bolla" + ITEM "3|Ordine" +END + +ENDPAGE ENDMASK diff --git a/ve/bollac.src b/ve/bollac.src index 2e11734ac..79b318f08 100755 --- a/ve/bollac.src +++ b/ve/bollac.src @@ -12,8 +12,6 @@ FRMFILE=BOLLAC.FRM // modifica CAMPICALC=TOTMER|TOTPRE|TOTSPE|SPESINC|BOLLI|SCONTOD|TOTNS|IMPOSTE|TOTDOC|PROVVD CALCOLI=BASESCONTO -IMPONIBILE=TOTNS -IMPOSTA=IMPOSTE TOTALE=TOTDOC BASESCONTO=BASESCONTO SPESE=TOTSPE @@ -196,17 +194,21 @@ NDEFAULTS=1 1=F_CAUSTRASP|VEN [SHEET] -NCOLS=10 +NCOLS=14 1=FR_CODMAG 2=FR_CODDEP 3=FR_CODART -4=FR_DESCR -5=FR_UMQTA -6=FR_QTA -7=FR_PREZZO -8=FR_SCONTO -9=FR_PERCPROV -10=FR_CODIVA +4=FR_LIV1 +5=FR_LIV2 +6=FR_LIV3 +7=FR_LIV4 +8=FR_DESCR +9=FR_UMQTA +10=FR_QTA +11=FR_PREZZO +12=FR_SCONTO +13=FR_PERCPROV +14=FR_CODIVA [RIGHE] NTIPIRIGA=9 @@ -262,7 +264,7 @@ NHANDLER=0 4000 = S_NORMALE [ORDINEGRUPPI] -NGROUPS=28 +NGROUPS=29 1=100 2=200 3=300 @@ -290,5 +292,6 @@ NGROUPS=28 25=2700 26=2710 27=1700 -28=2400 +28=2500 +29=2400 diff --git a/ve/bollaf.src b/ve/bollaf.src index 593a29db3..ba854c2c7 100755 --- a/ve/bollaf.src +++ b/ve/bollaf.src @@ -12,8 +12,6 @@ FRMFILE=BOLLAF.FRM // modifica CAMPICALC= CALCOLI= -IMPONIBILE= -IMPOSTA= TOTALE= BASESCONTO= SPESE= @@ -146,14 +144,18 @@ NDEFAULTS=1 1=F_CAUSTRASP|RES [SHEET] -NCOLS=6 +NCOLS=11 1=FR_CODMAG 2=FR_CODDEP 3=FR_CODART -4=FR_DESCR -5=FR_UMQTA -6=FR_QTA -6=FR_CODIVA +4=FR_LIV1 +5=FR_LIV2 +6=FR_LIV3 +7=FR_LIV4 +8=FR_DESCR +9=FR_UMQTA +10=FR_QTA +11=FR_CODIVA [RIGHE] NTIPIRIGA=1 diff --git a/ve/f34.dir b/ve/f34.dir index b0a881d4f..d81bbf6a8 100755 --- a/ve/f34.dir +++ b/ve/f34.dir @@ -1,3 +1,3 @@ 34 0 -$rdoc|0|0|263|31|Righe documenti di vendita|NDOC*3|| +$rdoc|0|0|278|31|Righe documenti di vendita|NDOC*3|| diff --git a/ve/f34.trr b/ve/f34.trr index 58dff4eae..f4eabe497 100755 --- a/ve/f34.trr +++ b/ve/f34.trr @@ -1,35 +1,36 @@ 34 -31 +32 CODNUM|1|4|0| -ANNO|2|4|0| +ANNO|2|4|0|Anno PROVV|1|1|0|Tipo numerazione

rovvisoria efinitiva -NDOC|3|7|0| -NRIGA|2|3|0| -STATORIGA|1|1|0| +NDOC|3|7|0|N. documento +NRIGA|2|3|0|N. riga +STATORIGA|1|1|0|Non usato TIPORIGA|1|3|0|Tipo riga GENERATA|8|1|0|Riga generata -CODMAG|1|5|0| -CODART|1|20|0| -DESCR|1|50|0| +CODMAG|1|5|0|Codice magazzino e deposito +CODART|1|20|0|Codice articolo, codice spesa o codice prestazione +LIVELLO|1|15|0|Codice di giacenza +DESCR|1|50|0|Descrizione DESCLUNGA|8|1|0|Descrizione estesa caricata DESCEST|11|10|0|Descrizione estesa -PREZZO|4|18|2| -UMQTA|1|2|0| -QTA|4|11|3| -QTAEVASA|4|11|3| -RIGAEVASA|8|1|0| -TARA|4|15|2| -PNETTO|4|15|2| -NCOLLI|3|7|0| -DAEVADERE|8|1|0| -SCONTO|1|25|0| -PERCPROV|4|5|2| -IMPFISSO|4|18|2| -IMPFISUN|8|1|0| -CODIVA|1|4|0| -ADDIVA|8|1|0| -ASPBENI|1|2|0| -G1|11|10|0| +PREZZO|4|18|2|Prezzo o valore +UMQTA|1|2|0|Unita di misura +QTA|4|11|3|Quantita' +QTAEVASA|4|11|3|Quantita' evasa +RIGAEVASA|8|1|0|Riga evasa +TARA|4|15|2|Tara +PNETTO|4|15|2|Peso netto +NCOLLI|3|7|0|N.colli +DAEVADERE|8|1|0|???? +SCONTO|1|25|0|Sconto +PERCPROV|4|5|2|Percentuale di provvigione +IMPFISSO|4|18|2|Importo fisso di provvigione +IMPFISUN|8|1|0|Flag importo fisso unitario +CODIVA|1|4|0|Codice IVA +ADDIVA|8|1|0|Addebito IVA +ASPBENI|1|2|0|Aspetto dei beni +G1|11|10|0|???? PSPESA|4|5|2|Percentuale di spesa 1 CODNUM+ANNO+PROVV+NDOC+NRIGA| diff --git a/ve/fatturaa.src b/ve/fatturaa.src index 057f096b5..859cb2ef7 100755 --- a/ve/fatturaa.src +++ b/ve/fatturaa.src @@ -12,8 +12,6 @@ FRMFILE=FATTURAA.FRM // modifica CAMPICALC=TOTMER|TOTPRE|TOTSPE|SPESINC|BOLLI|SCONTOD|TOTNS|IMPOSTE|TOTDOC|PROVVD CALCOLI=BASESCONTO -IMPONIBILE=TOTNS -IMPOSTA=IMPOSTE TOTALE=TOTDOC BASESCONTO=BASESCONTO SPESE=TOTSPE @@ -192,17 +190,21 @@ NDEFAULTS=1 1=F_CAUSTRASP|VEN [SHEET] -NCOLS=10 +NCOLS=14 1=FR_CODMAG 2=FR_CODDEP 3=FR_CODART -4=FR_DESCR -5=FR_UMQTA -6=FR_QTA -7=FR_PREZZO -8=FR_SCONTO -9=FR_PERCPROV -10=FR_CODIVA +4=FR_LIV1 +5=FR_LIV2 +6=FR_LIV3 +7=FR_LIV4 +8=FR_DESCR +9=FR_UMQTA +10=FR_QTA +11=FR_PREZZO +12=FR_SCONTO +13=FR_PERCPROV +14=FR_CODIVA [RIGHE] NTIPIRIGA=9 diff --git a/ve/fatturac.src b/ve/fatturac.src index 2b5adeb9f..6bd81eddc 100755 --- a/ve/fatturac.src +++ b/ve/fatturac.src @@ -11,8 +11,6 @@ FRMFILE=FATTURAC.FRM // modifica CAMPICALC=TOTMER|TOTPRE|TOTSPE|SPESINC|BOLLI|SCONTOD|TOTNS|IMPOSTE|TOTDOC|PROVVD CALCOLI=BASESCONTO -IMPONIBILE=TOTNS -IMPOSTA=IMPOSTE TOTALE=TOTDOC BASESCONTO=BASESCONTO SPESE=TOTSPE @@ -144,17 +142,21 @@ BLANK = S_DISABILITATO //4000 NDEFAULTS=0 [SHEET] -NCOLS=10 +NCOLS=14 1=FR_CODMAG 2=FR_CODDEP 3=FR_CODART -4=FR_DESCR -5=FR_UMQTA -6=FR_QTA -7=FR_PREZZO -8=FR_SCONTO -9=FR_PERCPROV -10=FR_CODIVA +4=FR_LIV1 +5=FR_LIV2 +6=FR_LIV3 +7=FR_LIV4 +8=FR_DESCR +9=FR_UMQTA +10=FR_QTA +11=FR_PREZZO +12=FR_SCONTO +13=FR_PERCPROV +14=FR_CODIVA [RIGHE] NTIPIRIGA=9 diff --git a/ve/ve0100.cpp b/ve/ve0100.cpp index 5c37e6eaa..2a2deea2f 100755 --- a/ve/ve0100.cpp +++ b/ve/ve0100.cpp @@ -10,6 +10,10 @@ #include "veini.h" #endif +#ifndef __MGLIB01_H +#include "..\mg\mglib01.h" +#endif + #ifndef __UTILITY_H #include "utility.h" #endif @@ -103,10 +107,16 @@ int TMotore_application::user_function( int index ) // Funzione che dato il profilo di riga ottiene la maschera // Serve per ottenere una maschera diversa per ogni riga TMask * TMotore_application::ss_getmask( int numriga, TMask& fullmask) -{ - TRiga_documento & riga = (*(app()._doc))[numriga + 1]; - - return ((TTipo_riga_documento &)riga.tipo()).mask(); +{ + const int n = numriga + 1; + if (n <= app()._doc->physical_rows()) + { + TRiga_documento & riga = (*(app()._doc))[numriga + 1]; + + return ((TTipo_riga_documento &)riga.tipo()).mask(); + } + else + return & fullmask; } void TMotore_application::user_set_handler( int fieldid, int index, TMask* m ) @@ -171,6 +181,7 @@ bool TMotore_application::ss_handler( TSheet_field& ss, int r, KEY key ) s << app()._clifor->get(LF_CFVEN, "CODDEP"); riga.put("CODMAG", s); riga.autoload(ss); + ss.check_row(r); ss.select(r); } return TRUE; @@ -223,25 +234,18 @@ bool TMotore_application::num_handler( TMask_field& f, KEY key ) } bool TMotore_application::elabora_handler( TMask_field& f, KEY key ) -{ - // Ottengo la maschera - // TMask& m = f.mask( ); - - // Registra il record corrente - // m.send_key( K_INS, 99 ); - - // TString commandline("ve4 "); - // commandline << m.get( F_CODNUM ); - // commandline << " "; - // commandline << m.get( F_ANNO ); - // commandline << " "; - // commandline << m.get( F_PROVV ); - // commandline << " "; - // commandline << m.get( F_NDOC ); - // TExternal_app interattivo( commandline ); - // interattivo.run( ); - // ricarica il documento dopo che l'interattivo lo ha modificato - // app( ).read( m ); +{ + if (key == K_SPACE) + { + return message_box("Funzione in fase di implementazione"); + TString_array elabs; + TMask & m = f.mask(); + const TString16 tipo(m.get(F_TIPODOC)); + const TString16 stato(m.get(F_STATO)); + TLista_elaborazioni & elab = app().elab(); + + elab.select(elabs, TRUE, m.insert_mode(), NULL, NULL, tipo, stato); + } return TRUE; } @@ -451,7 +455,7 @@ TMask* TMotore_application::get_mask( int mode ) msk1->set_handler( F_DATAINSC, condpag_hndl ); msk1->set_handler( F_CODNOTE, note_hndl ); msk1->set_handler( F_DATADOC, data_hndl ); - msk1->set_handler( 99, elabora_handler ); + msk1->set_handler( 99, elabora_handler ); // cazzo !!!!!! msk1->set_handler( DLG_PRINT, print_handler ); int numhandler = pro( ).get_int( "NHANDLER", "HANDLERS" ); // prof for ( i = 1; i <= numhandler; i ++ ) @@ -460,7 +464,25 @@ TMask* TMotore_application::get_mask( int mode ) chiave.format( "%d", i ); TToken_string riga = pro( ).get( chiave, "HANDLERS" ); user_set_handler( riga.get_int( 0 ), riga.get_int( 1 ) ); - } + } + + TMag_livelli l("FCG"); + + for ( i = MAX_GIAC_LEVEL; i > 0; i--) + { + const short pos = _sheet->cid2index(FR_LIV1 + i -1); + if (l.enabled(i)) + { + const TString & header = l.name(i); + const int len = header.len() + 1; + const int f_len = l.code_lenght(i); + + _sheet->set_column_header(pos, l.name(i)); + _sheet->set_column_width(pos, (len > f_len ? len : f_len) * 8); + } + else + _sheet->delete_column(pos); + } // configurazione campi @@ -607,7 +629,7 @@ int TMotore_application::read( TMask& m ) TSheet_field& f = ( TSheet_field& ) m.field( F_SHEET ); f.destroy( ); - const int rows = _doc->rows(); + const int rows = _doc->physical_rows(); for (int i = 1; i <= rows; i++) { f.insert(-1, FALSE); @@ -616,7 +638,6 @@ int TMotore_application::read( TMask& m ) rec.autoload(f); f.check_row(i - 1); -// f.post_insert(i - 1); } } return err; diff --git a/ve/ve0100.h b/ve/ve0100.h index 50d80aa41..808ea5de3 100755 --- a/ve/ve0100.h +++ b/ve/ve0100.h @@ -111,7 +111,7 @@ class TMotore_application : public TRelation_application // Puntatore al profilo del documento caricato TConfig * _pro; - TConfig * _config_ditta; + TConfig * _config_ditta; // Puntatore alla maschera di ricerca TMask * _msk; @@ -130,17 +130,13 @@ class TMotore_application : public TRelation_application // Indica se il documento ha come soggetto un liente o un ornitore char _tipocf; -// TString16 _profilo; TString16 _codnum; TString16 _tipodoc; -// int _anno; -// TString16 _tiponum; -// long _numdoc; -// int _statodoc; // Array di maschere documento TAssoc_array _doc_masks; + TLista_elaborazioni _elab; // Ridefinizione dei metodi virtuali virtual bool user_create( ); @@ -223,6 +219,7 @@ public: TCliForVendite & clifo() { CHECK( _clifor, "Oggetto cliente nullo!" ); return *_clifor; } TCond_vendita & condv() { return *_condv; } TConfig & config_ditta() {return *_config_ditta; } + TLista_elaborazioni & elab() { return _elab; } TDocumento & doc() {return *_doc; } // Operazione diff --git a/ve/ve0100a.uml b/ve/ve0100a.uml index 4dbc61e8c..d1599bed5 100755 --- a/ve/ve0100a.uml +++ b/ve/ve0100a.uml @@ -31,7 +31,7 @@ PAGE "Gestione documenti" 1 1 60 14 STRING F_DESNUM 50 BEGIN - PROMPT 25 1 "" + PROMPT 24 1 "" HELP "Descrizione numerazione" USE %NUM KEY 2 INPUT S0 F_DESNUM @@ -58,7 +58,7 @@ PAGE "Gestione documenti" 1 1 60 14 STRING F_DESTIPODOC 50 BEGIN - PROMPT 25 2 "" + PROMPT 24 2 "" HELP "Descrizione tipo documento" USE %TIP KEY 2 INPUT S0 F_DESTIPODOC @@ -67,9 +67,18 @@ PAGE "Gestione documenti" 1 1 60 14 COPY OUTPUT F_TIPODOC END + NUMBER F_ANNO 4 + BEGIN + PROMPT 2 3 "Esercizio " + FIELD ANNO + CHECKTYPE REQUIRED + FLAG "AP" + KEY 1 + END + NUMBER F_NDOC 6 BEGIN - PROMPT 2 3 "Numero doc. " + PROMPT 24 3 "Numero doc. " FIELD NDOC USE LF_DOC INPUT ANNO F_ANNO SELECT @@ -91,7 +100,7 @@ PAGE "Gestione documenti" 1 1 60 14 LISTBOX F_PROVV 14 BEGIN FIELD PROVV - PROMPT 25 3 "Numerazione " + PROMPT 46 3 "Tipo " ITEM "D|Definitiva " ITEM "P|Provvisoria" KEY 1 @@ -100,27 +109,11 @@ PAGE "Gestione documenti" 1 1 60 14 STRING F_STATO 1 BEGIN - PROMPT 57 3 "Stato " + PROMPT 69 3 "Stato " FIELD STATO FLAG "D" END - NUMBER F_ANNO 4 - BEGIN - PROMPT 68 3 "Es. " - FIELD ANNO - CHECKTYPE REQUIRED - FLAG "A" - KEY 1 - END - - BOOLEAN F_ATTIVAANNO - BEGIN - PROMPT 2 6 "Attiva esercizio" - MESSAGE TRUE ENABLE,F_ANNO - MESSAGE FALSE DISABLE,F_ANNO - END - STRING F_TIPIDOCS 40 BEGIN PROMPT 2 10 "" diff --git a/ve/ve0200.cpp b/ve/ve0200.cpp index a1173e016..6d967de6d 100755 --- a/ve/ve0200.cpp +++ b/ve/ve0200.cpp @@ -14,24 +14,24 @@ #ifndef __TABUTIL_H #include -#endif +#endif #include "veconf.h" #define SINTASSI "Usage: VE0 -2 -[1|2|3|4|5|6]" class TConf_vendite : public TConfig_application -{ +{ char _current; - + static bool check_fields(TMask_field& f, KEY k); public: - + virtual bool preprocess_config (TMask& mask, TConfig& config); virtual bool postprocess_config (TMask& mask, TConfig& config); virtual bool user_create( ); virtual bool user_destroy( ); - + TConf_vendite() : TConfig_application( CONFIG_DITTA ){ } virtual ~TConf_vendite( ){ } }; @@ -56,7 +56,7 @@ bool TConf_vendite::check_fields(TMask_field& f, KEY k) } bool TConf_vendite::preprocess_config (TMask& mask, TConfig& config) -{ +{ disable_menu_item(M_FILE_NEW); disable_menu_item(M_FILE_REVERT); if (_current == '5') // solo per configurazione "e" @@ -93,11 +93,11 @@ bool TConf_vendite::preprocess_config (TMask& mask, TConfig& config) } } } - return TRUE; + return TRUE; } bool TConf_vendite::postprocess_config (TMask& mask, TConfig& config) -{ +{ enable_menu_item(M_FILE_NEW); enable_menu_item(M_FILE_REVERT); if (_current == '5') // solo per configurazione "e" @@ -106,17 +106,17 @@ bool TConf_vendite::postprocess_config (TMask& mask, TConfig& config) TString r; const KEY k = mask.last_key(); bool tosave = k == K_ENTER || k == K_SAVE; - + if (!tosave && mask.dirty()) tosave = yesno_box("Modifiche non registrate. Salvare?"); - + if (!tosave) return FALSE; - + for (short i=F_RICERCACR1;i<=F_RICERCACR5;i++) { r = mask.get(i); - if (r == "-") continue; + if (r == "-") continue; if (r == "AN") for (short j=F_RICERCAAN1;j<=F_RICERCAAN4;j++) { @@ -129,7 +129,7 @@ bool TConf_vendite::postprocess_config (TMask& mask, TConfig& config) } config.set("RICERCACR",ric); } - return TRUE; + return TRUE; } @@ -139,12 +139,12 @@ bool TConf_vendite::user_create( ) // Il fottuto meno serve per evitare fottutamente che la fottuta confapp // si fotta il fottuto parametro if( arg[ 0 ] != '-' ) - fatal_box( SINTASSI ); + fatal_box( SINTASSI ); _current = arg[1]; TConfig conf(_current == '6' ? CONFIG_STUDIO : CONFIG_DITTA ); if (_current == '6') set_config(CONFIG_STUDIO); // Prima usavo le lettere ma la fottuta confapp si fotte il fottuto -c per i suoi fottuti - // motivi, così uso i fottuti numeri + // motivi, cosi uso i fottuti numeri switch( _current ) { case '1': @@ -153,16 +153,16 @@ bool TConf_vendite::user_create( ) case '2': conf.set( "EdMask", "ve0200b", "ve" ); break; - case '3': + case '3': conf.set( "EdMask", "ve0200c", "ve" ); break; - case '4': + case '4': conf.set( "EdMask", "ve0200d", "ve" ); break; - case '5': + case '5': conf.set( "EdMask", "ve0200e", "ve" ); break; - case '6': + case '6': conf.set( "EdMask", "ve0200f", "ve" ); break; default: @@ -171,19 +171,19 @@ bool TConf_vendite::user_create( ) break; } return TRUE; -} +} bool TConf_vendite::user_destroy( ) -{ +{ return TRUE; -} +} int ve0200(int argc, char** argv) { TConf_vendite appc; - + if( argc < 3 ) fatal_box( SINTASSI ); appc.run(argc, argv, "Parametri gestione vendite"); return 0; -} +} diff --git a/ve/ve0200a.uml b/ve/ve0200a.uml index 56e881d8d..484b93508 100755 --- a/ve/ve0200a.uml +++ b/ve/ve0200a.uml @@ -14,7 +14,7 @@ END ENDPAGE -PAGE "Tabelle di installazione" 1 1 60 14 +PAGE "Installazione" 1 1 60 14 GROUPBOX DLG_NULL 78 7 BEGIN @@ -134,7 +134,7 @@ END ENDPAGE -PAGE "Tabella gestione sconti " 1 1 60 14 +PAGE "Sconti " 1 1 60 14 LIST F_GESSCO 36 BEGIN @@ -222,20 +222,6 @@ PROMPT 2 13 "Gestione archivio sconti unita' di misura " FIELD GESSCOUM END -STRING F_SCOTRIGA 4 -BEGIN -PROMPT 2 14 "Tipo riga per gli sconti di testa " -FLAGS "U" -USE %TRI SELECT S7=="C" -FIELD SCOTRIGA -INPUT CODTAB F_SCOTRIGA -DISPLAY "Codice" CODTAB -DISPLAY "Descrizione@50" S0 -OUTPUT F_SCOTRIGA CODTAB -CHECKTYPE REQUIRED -END - ENDPAGE ENDMASK - diff --git a/ve/ve0200b.uml b/ve/ve0200b.uml index 92180d151..974565a64 100755 --- a/ve/ve0200b.uml +++ b/ve/ve0200b.uml @@ -14,7 +14,7 @@ END ENDPAGE -PAGE "Tabelle di installazione" 1 1 60 14 +PAGE "Installazione" 1 1 60 14 GROUPBOX DLG_NULL 78 4 BEGIN diff --git a/ve/ve0200c.uml b/ve/ve0200c.uml index 8d12d3b2a..4a4560d76 100755 --- a/ve/ve0200c.uml +++ b/ve/ve0200c.uml @@ -14,7 +14,7 @@ END ENDPAGE -PAGE "Tabella gestione sconti" 1 1 60 14 +PAGE "Sconti" 1 1 60 14 GROUPBOX DLG_NULL 78 4 BEGIN @@ -56,7 +56,7 @@ COPY ALL F_SCOPRCODCON1 CHECKTYPE NORMAL END -STRING F_SCOPRDESCON 50 +STRING F_SCOPRDESCON 50 BEGIN PROMPT 2 3 "Descrizione " USE LF_PCON KEY 2 diff --git a/ve/ve0200d.uml b/ve/ve0200d.uml index 69bc45163..4e280d401 100755 --- a/ve/ve0200d.uml +++ b/ve/ve0200d.uml @@ -14,7 +14,7 @@ END ENDPAGE -PAGE "Tabella gestione spese" 1 1 60 14 +PAGE "Spese" 1 1 60 14 GROUPBOX DLG_NULL 78 8 BEGIN diff --git a/ve/ve0200e.uml b/ve/ve0200e.uml index dc3f23f2a..42de7bbd8 100755 --- a/ve/ve0200e.uml +++ b/ve/ve0200e.uml @@ -14,7 +14,7 @@ END ENDPAGE -PAGE "Tabelle contabilizzazione" 1 1 60 14 +PAGE "Contabilizzazione" 1 1 60 14 GROUPBOX DLG_NULL 78 7 BEGIN diff --git a/ve/ve0200f.uml b/ve/ve0200f.uml index 5672eaaf4..b0a2abc13 100755 --- a/ve/ve0200f.uml +++ b/ve/ve0200f.uml @@ -14,7 +14,7 @@ END ENDPAGE -PAGE "Gestione spese incasso" 1 1 60 14 +PAGE "Spese incasso" 1 1 60 14 NUMBER F_IMPSPINC1 9 BEGIN @@ -82,7 +82,7 @@ END ENDPAGE -PAGE "Gestione spese bolli" 1 1 60 14 +PAGE "Spese bolli" 1 1 60 14 NUMBER F_SPBOSCA1 11 BEGIN @@ -182,31 +182,84 @@ FIELD SPBOIMP[7] PICTURE "." END +NUMBER F_BOLLIES 11 +BEGIN +PROMPT 2 10 "Bollo per esenzioni " +FIELD BOLLIES +PICTURE "." +END + ENDPAGE -PAGE "Gestione omaggi" 1 1 60 14 +PAGE "Automatismi" 1 1 60 14 -STRING F_TIPORIGAOM 4 +STRING F_OMTRIGA 4 BEGIN - PROMPT 2 2 "Tipo riga per omaggi " + PROMPT 2 2 "Tipo riga omaggi " FIELD TROMAGGI FLAGS "U" USE %TRI SELECT S7=="O" - INPUT CODTAB F_TIPORIGAOM + INPUT CODTAB F_OMTRIGA DISPLAY "Codice" CODTAB DISPLAY "Descrizione@50" S0 - OUTPUT F_TIPORIGAOM CODTAB - OUTPUT F_DESCRRIGAOM S0 + OUTPUT F_OMTRIGA CODTAB + OUTPUT F_OMDRIGA S0 CHECKTYPE REQUIRED END -STRING F_DESCRRIGAOM 50 +STRING F_OMDRIGA 50 BEGIN - PROMPT 23 3 "" + PROMPT 25 3 "" USE %TRI KEY 2 SELECT S7=="O" - INPUT S0 F_DESCRRIGAOM - COPY DISPLAY F_TIPORIGAOM - COPY OUTPUT F_TIPORIGAOM + INPUT S0 F_OMDRIGA + COPY DISPLAY F_OMTRIGA + COPY OUTPUT F_OMTRIGA +END + +STRING F_ESTRIGA 4 +BEGIN + PROMPT 2 4 "Tipo riga esenzioni " + FLAGS "U" + USE %TRI SELECT S7=="D" + FIELD TRESENZ + INPUT CODTAB F_ESTRIGA + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_ESTRIGA CODTAB + OUTPUT F_ESDRIGA S0 + CHECKTYPE REQUIRED +END + +STRING F_ESDRIGA 50 +BEGIN + PROMPT 25 5 "" + USE %TRI KEY 2 SELECT S7=="D" + INPUT S0 F_ESDRIGA + COPY DISPLAY F_ESTRIGA + COPY OUTPUT F_ESTRIGA +END + +STRING F_SCTRIGA 4 +BEGIN + PROMPT 2 6 "Tipo riga sconti testa " + FLAGS "U" + USE %TRI SELECT S7=="C" + FIELD TRSCONTI + INPUT CODTAB F_SCTRIGA + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_SCTRIGA CODTAB + OUTPUT F_SCDRIGA S0 + CHECKTYPE REQUIRED +END + +STRING F_SCDRIGA 50 +BEGIN + PROMPT 25 7 "" + USE %TRI KEY 2 SELECT S7=="C" + INPUT S0 F_SCDRIGA + COPY DISPLAY F_SCTRIGA + COPY OUTPUT F_SCTRIGA END ENDPAGE diff --git a/ve/ve0300.cpp b/ve/ve0300.cpp index 3b8474b23..926e672eb 100755 --- a/ve/ve0300.cpp +++ b/ve/ve0300.cpp @@ -1059,34 +1059,34 @@ void TMask_generator::intestazione_pagina( ) _m->group( 5 ); _m->end( ); + _m->control( T_STRINGA, DLG_NULL, 4 ); + _m->begin( ); + _m->prompt( 2, 3, "Esercizio " ); + _m->group( 9 ); + _m->flag( "D" ); + _m->end( ); + _m->control( T_NUMERO, DLG_NULL, 6 ); _m->begin( ); - _m->prompt( 2, 3, "Doc.: nr. " ); + _m->prompt( 24, 3, "Numero doc. " ); _m->group( 6 ); _m->flag( "D" ); _m->end( ); _m->control( T_DATA, DLG_NULL ); _m->begin( ); - _m->prompt( 24, 3, "Data " ); + _m->prompt( 46, 3, "Data " ); _m->group( 7 ); _m->flag( "D" ); _m->end( ); _m->control( T_NUMERO, DLG_NULL, 1 ); _m->begin( ); - _m->prompt( 50, 3, "Stato " ); + _m->prompt( 67, 3, "Stato " ); _m->group( 8 ); _m->flag( "D" ); _m->end( ); - _m->control( T_STRINGA, DLG_NULL, 4 ); - _m->begin( ); - _m->prompt( 66, 3, "Es. " ); - _m->group( 9 ); - _m->flag( "D" ); - _m->end( ); - _m->control( T_STRINGA, DLG_NULL, 6 ); _m->begin( ); if ( _pro->get( "TIPOCF", "MAIN" ) == "C" ) @@ -1247,9 +1247,17 @@ void TMask_generator::genera( const TString& profilo ) _m->message( "CO,5@" ); _m->end( ); + _m->control( T_STRINGA, F_ANNO, 4 ); + _m->begin( ); + _m->prompt( 2, 3, "Esercizio " ); + _m->field( "ANNO" ); + _m->flag( "GD" ); + _m->message( "CO,9@" ); + _m->end( ); + _m->control( T_NUMERO, F_NDOC, 6 ); _m->begin( ); - _m->prompt( 2, 3, "Doc.: nr. " ); + _m->prompt( 24, 3, "Numero doc. " ); _m->field( "NDOC" ); _m->message( "CO,6@" ); _m->flag( "GDR" ); @@ -1257,28 +1265,20 @@ void TMask_generator::genera( const TString& profilo ) _m->control( T_DATA, F_DATADOC ); _m->begin( ); - _m->prompt( 24, 3, "Data " ); + _m->prompt( 46, 3, "Data " ); _m->field( "DATADOC" ); - _m->message( "CO,7@" ); + _m->message( format("CO,7@|CO,%d", F_DATACAMBIO1) ); _m->flag( "A" ); _m->end( ); _m->control( T_NUMERO, F_STATO, 1 ); _m->begin( ); - _m->prompt( 50, 3, "Stato " ); + _m->prompt( 67, 3, "Stato " ); _m->field( "STATO" ); _m->message( "CO,8@" ); _m->flag( "DG" ); _m->end( ); - _m->control( T_STRINGA, F_ANNO, 4 ); - _m->begin( ); - _m->prompt( 66, 3, "Es. " ); - _m->field( "ANNO" ); - _m->flag( "GD" ); - _m->message( "CO,9@" ); - _m->end( ); - _m->control( T_STRINGA, F_CODCF, 6 ); _m->begin( ); if ( _pro->get( "TIPOCF", "MAIN" ) == "C" ) diff --git a/ve/ve0300b.dat b/ve/ve0300b.dat index 63c8e88ce..6bff337d6 100755 --- a/ve/ve0300b.dat +++ b/ve/ve0300b.dat @@ -2,7 +2,11 @@ STATORIGA|2|1|Stato|1 TIPORIGA|2|2|Tipo riga|2 CODMAG[1,3]|2|3|Mag. |3 CODMAG[4,5]|2|2|Dep.|2 -CODART|2|30|Cod. Art.|30 +CODART|2|20|Cod. Art.|20 +CODG1|2|9|Cod.G.1|9 +CODG2|2|9|Cod.G.2|9 +CODG3|2|9|Cod.G.3|9 +CODG4|2|9|Cod.G.4|9 DESCR|2|50|Descrizione|50 UMQTA|2|2|UM|2 QTA|3|1103|Qta|11 diff --git a/ve/ve0300c.ini b/ve/ve0300c.ini index 81c69ebfd..2a8e40520 100755 --- a/ve/ve0300c.ini +++ b/ve/ve0300c.ini @@ -90,7 +90,7 @@ HEIGHT=1 HEIGHT=1 [2500] -HEIGHT=1 +HEIGHT=7 [2700] HEIGHT=1 diff --git a/ve/ve1100.cpp b/ve/ve1100.cpp index 119029927..46abed7b3 100755 --- a/ve/ve1100.cpp +++ b/ve/ve1100.cpp @@ -76,6 +76,7 @@ class TDocumento_form : public TForm TRelation &_firmrel; // relazione di gestione dei dati della ditta corrente TString _module; // codice del modulo di carta associato a questo al form TCliFor *_cliente; // oggetto per le informazioni sul cliente + TCond_vendita * _condv; TString_array _exclude_array; // array di coppie tipo/articolo da escludere dalla stampa TDocumentoEsteso * _doc; // Documento da stampare bool _valid, _cli_loaded; // flag che indica se il form e' valido | se l'oggetto cliente è già stato caricato @@ -173,7 +174,8 @@ TDocumento_form::TDocumento_form(TRectype&/*TDocumentoEsteso**/ doc, TRelation& _cli_loaded= FALSE; _is_lista = FALSE; - _doc = new TDocumentoEsteso(doc); // istanzia TDocumentoEsteso + _condv = new TCond_vendita(_cliente); + _doc = new TDocumentoEsteso(doc, _condv); // istanzia TDocumentoEsteso _docfile = new TDocisamfile(_doc); _rdocfile = new TRDocisamfile(_doc); relation()->replace(_docfile,0); @@ -750,16 +752,11 @@ bool TDocumento_form::validate(TForm_item &cf, TToken_string &s) { TLocalisamfile &rdoc= (cursor())->file(LF_RIGHEDOC); TString descrizione = rdoc.get("DESCR"); const bool desclunga = rdoc.get_bool("DESCLUNGA"); - if (desclunga) { - TTextfile t; - rdoc.get_memo("DESCEST",t); - const long l = t.lines(); - for (long i = 0; i +#endif + TSpesa_prest::TSpesa_prest(const char* codice, char tipo) : TRectype(LF_TAB) { @@ -177,6 +181,7 @@ bool note_hndl( TMask_field& f, KEY key ) if (key == K_TAB && (f.focusdirty() || !m.is_running())) { TTable & note = (TTable &) ((TEdit_field &) f).browse()->cursor()->file(); + note.setkey(1); const TString16 cod(f.get()); if (cod != note.get("CODTAB")) @@ -263,6 +268,17 @@ HIDDEN bool codart_handler( TMask_field& f, KEY key ) { TMask& row_mask = f.mask(); + if (f.to_check(key, TRUE)) + { + if (f.get().not_empty()) + row_mask.enable(FR_LIV1); + else + { + row_mask.reset(FR_LIV1); + row_mask.disable(FR_LIV1); + } + row_mask.field(FR_LIV1).on_hit(); + } if (key == K_TAB && (f.focusdirty() || row_mask.get(FR_DESCR).empty())) { TDocumento_mask & mask = (TDocumento_mask &) row_mask.get_sheet()->mask(); @@ -293,8 +309,8 @@ HIDDEN bool codart_handler( TMask_field& f, KEY key ) if (anamag.read() == NOERR) f.set(codart); } - } - + } + if (anamag.good()) { const TString16 lingua = mask.get(F_CODLIN); @@ -338,6 +354,24 @@ HIDDEN bool codart_handler( TMask_field& f, KEY key ) return TRUE; } +HIDDEN bool liv_handler( TMask_field& f, KEY key ) +{ + if (f.to_check(key, TRUE)) + { + TMask& row_mask = f.mask(); + TMask_field & next = row_mask.field(f.dlg() + 1); + if (f.get().not_empty()) + next.enable(); + else + { + next.reset(); + next.disable(); + } + next.on_hit(); + } + return TRUE; +} + HIDDEN bool umart_handler( TMask_field& f, KEY key ) { // Se qualcuno cerca di modificare la maschera @@ -598,21 +632,18 @@ real TDocumento::spese_incasso(real & imp, int ndec, TTipo_importo t) const if (cambio == ZERO) cambio = 1.0; -// if (netto == FALSE) -// { - static TString16 codiva; - static long firm = -1; - long new_firm = main_app().get_firm(); + static TString16 codiva; + static long firm = -1; + long new_firm = main_app().get_firm(); - if (firm != new_firm) - { - TConfig conf(CONFIG_DITTA); + if (firm != new_firm) + { + TConfig conf(CONFIG_DITTA); - codiva = conf.get("SPINCODIVA", "ve"); - firm = new_firm; - } - real iva_spese(iva(imp_spese, TRiga_documento::iva(codiva), ndec)); -// } + codiva = conf.get("SPINCODIVA", "ve"); + firm = new_firm; + } + real iva_spese(iva(imp_spese, TRiga_documento::iva(codiva), ndec)); if (t == _lordo) imp_spese += iva_spese; else @@ -728,22 +759,18 @@ real TDocumento::bolli(real & imp, int ndec, TTipo_importo t) const break; } } -// if (netto == FALSE) -// { - static TString16 codiva; - static long firm = -1; - long new_firm = main_app().get_firm(); + static TString16 codiva; + static long firm = -1; + long new_firm = main_app().get_firm(); - if (firm != new_firm) - { - TConfig conf(CONFIG_DITTA); + if (firm != new_firm) + { + TConfig conf(CONFIG_DITTA); - codiva = conf.get("SPBOCODIVA", "ve"); - firm = new_firm; - } - iva_bolli = iva(tot_bolli, TRiga_documento::iva(codiva), ndec); -// tot_bolli += iva_bolli; -// } + codiva = conf.get("SPBOCODIVA", "ve"); + firm = new_firm; + } + iva_bolli = iva(tot_bolli, TRiga_documento::iva(codiva), ndec); importo += (tot_bolli + iva_bolli - old_bolli); } if (t == _lordo) @@ -983,7 +1010,6 @@ void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & st real & val = stack.peek_real(); if (_row) -// val = _row->iva(ndec); val = _row->imposta(); else val = ZERO; @@ -1063,14 +1089,14 @@ TObject* TExpr_documento::dup() const // Formula generica /////////////////////////////////////////////////////////// -TFormula_documento::TFormula_documento(TTipo_formula tipo, const char* codice) +TFormula_documento::TFormula_documento(TTipo_formula tipo, const char* codice, const char * expr, bool numexpr) : TRectype(LF_TABCOM), _expr(NULL) { _tab = tipo == _documento ? "FRD" : "FRR"; settab(_tab); _tab.insert("%"); if (codice && *codice) - read(codice); + read(codice, expr, numexpr); } TFormula_documento::TFormula_documento(const TRectype& rec) @@ -1086,7 +1112,7 @@ TFormula_documento::~TFormula_documento() if (_expr) delete _expr; } -int TFormula_documento::read(const char* codice) +int TFormula_documento::read(const char* codice, const char * expr, bool numexpr) { if (_expr != NULL) { @@ -1094,11 +1120,21 @@ int TFormula_documento::read(const char* codice) _expr = NULL; } - TTable t(_tab); - put("CODTAB", codice); - int err = TRectype::read(t); + int err = NOERR; + + if (expr && *expr) + { + put("S1", expr); + put("B0", numexpr ? "X" : ""); + } + else + { + TTable t(_tab); + + err = TRectype::read(t); + } if (err == NOERR) { @@ -1163,6 +1199,12 @@ void TTipo_documento::read_formule() _formule = profile.get("CAMPICALC", "MAIN"); _formule.add(profile.get("CALCOLI", "MAIN")); _totale = profile.get("TOTALE", "MAIN"); + if (_totale.empty()) + { + _totale = "TOTDOC"; + if (_formule.find(_totale) < 0) + _formule.add("TOTDOC=IMPONIBILI()+IMPOSTE()"); + } _totale_netto = "_"; _totale_netto << _totale; if (_totale.not_empty() && _formule.find(_totale) < 0) @@ -1171,12 +1213,24 @@ void TTipo_documento::read_formule() _totale.cut(0); } _basesconto = profile.get("BASESCONTO", "MAIN"); + if (_basesconto.empty()) + { + _basesconto = "BASESCONTO"; + if (_formule.find(_basesconto) < 0) + _formule.add("BASESCONTO=SOMMA(\"IMPONIBILE()\", \"(TIPO() != 'S') && (TIPO() != 'C')\")"); + } if (_basesconto.not_empty() && _formule.find(_basesconto) < 0) { error_box("Campo sconto documento (%s) sconosciuto nel tipo documento %s", (const char *) _basesconto, (const char *) codice()); _basesconto.cut(0); } _spese = profile.get("SPESE", "MAIN"); + if (_spese.empty()) + { + _spese = "SPESE"; + if (_formule.find(_spese) < 0) + _formule.add("SPESE=SOMMA(\"IMPONIBILE()\", \"TIPO() != 'S'\")"); + } if (_spese.not_empty() && _formule.find(_spese) < 0) { error_box("Campo spese (%s) sconosciuto nel tipo documento %s", (const char *) _spese, (const char *) codice()); @@ -1188,13 +1242,20 @@ TFormula_documento * TTipo_documento::succ_formula(bool restart) { if (restart) _formule.restart(); - const TString16 formula(_formule.get()); + const TString formula(_formule.get()); if (formula.not_empty()) - { + { + char *expr = NULL; + const int p = formula.find("="); + if (p > 0) + { + expr = (char *) (const char *) formula + p; + *expr = '\0'; expr++; + } TFormula_documento * o = (TFormula_documento*)_formule_documento.objptr(formula); if (o == NULL) { - o = new TFormula_documento(_documento, formula); + o = new TFormula_documento(_documento, formula, expr); _formule_documento.add(formula, o); } return o; @@ -1256,6 +1317,12 @@ void TTipo_riga_documento::read_formule() _formule = profile.get("CAMPICALC", "MAIN"); _formule.add(profile.get("CALCOLI", "MAIN")); _imponibile = profile.get("IMPONIBILE", "MAIN"); + if (_imponibile.empty()) + { + _imponibile = "IMPONIBILE"; + if (_formule.find(_imponibile) < 0) + _formule.add("IMPONIBILE=PREZZO()"); + } if (_imponibile.not_empty() && _formule.find(_imponibile) < 0) { error_box("Campo imponibile (%s) sconosciuto nel tipo riga %s", (const char *) _imponibile, (const char *) codice()); @@ -1267,13 +1334,20 @@ TFormula_documento * TTipo_riga_documento::succ_formula(bool restart) { if (restart) _formule.restart(); - const TString16 formula(_formule.get()); + const TString formula(_formule.get()); if (formula.not_empty()) { + char *expr = NULL; + const int p = formula.find("="); + if (p > 0) + { + expr = (char *) (const char *) formula + p; + *expr = '\0'; expr++; + } TFormula_documento * o = (TFormula_documento*)_formule_riga.objptr(formula); if (o == NULL) { - o = new TFormula_documento(_riga, formula); + o = new TFormula_documento(_riga, formula, expr); _formule_riga.add(formula, o); } return o; @@ -1286,7 +1360,7 @@ TVariable_mask * TTipo_riga_documento::mask() { if (mask_loaded()) return _mask; - _mask = new TVariable_mask(mask_name()); + _mask = new TVariable_mask(mask_name()); TFilename proname(profile_name()); proname.ext( "ini" ); @@ -1321,6 +1395,9 @@ TVariable_mask * TTipo_riga_documento::mask() if (num == LF_ANAMAG) { _mask->set_handler( FR_CODART, codart_handler ); + _mask->set_handler( FR_LIV1, liv_handler ); + _mask->set_handler( FR_LIV2, liv_handler ); + _mask->set_handler( FR_LIV3, liv_handler ); _mask->set_handler( FR_UMQTA, umart_handler ); _mask->set_handler( FR_DESCR, descr_handler ); _mask->set_handler( FR_QTA, qta_handler ); @@ -1625,8 +1702,20 @@ real TRiga_documento::imponibile() const { const TString16 field(tipo().imponibile()); - if (field.not_empty()) - return get_real(field); + if (field.not_empty()) + { + if (tipo().tipo() == RIGA_OMAGGI && _iva_calc) + { + TDocumento_variable_field * f = (TDocumento_variable_field *) variable_field(field); + CHECKS(f, "Field UNKNOWN : ", field); + f->set_dirty(TRUE); + const real r = get_real(field); + f->set_dirty(TRUE); + return r; + } + else + return get_real(field); + } else return importo(TRUE, FALSE, doc().in_valuta() ? 3 : 0); } @@ -1706,7 +1795,11 @@ void TRiga_documento::autosave(TSheet_field & f) codmag.left_just(3); codmag << row.get( f.cid2index(FR_CODDEP )); put( "CODMAG", codmag); - put( "CODART", row.get( f.cid2index(FR_CODART )) ); + put( "CODART", row.get( f.cid2index(FR_CODART )) ); + put( "LIVELLO",row.get( f.cid2index(FR_LIV1 ))); // da modificare + put( "LIVELLO",row.get( f.cid2index(FR_LIV2 ))); + put( "LIVELLO",row.get( f.cid2index(FR_LIV3 ))); + put( "LIVELLO",row.get( f.cid2index(FR_LIV4 ))); TString s(row.get(f.cid2index(FR_DESCR))); int split_pos = s.find('\n'); @@ -1754,6 +1847,7 @@ void TRiga_documento::autoload(TSheet_field & f) const int num = numero() - 1; TToken_string & row = f.row(num); + row.cut(0); row.add( get( "STATORIGA" ), f.cid2index(FR_STATORIGA )); row.add( get( "TIPORIGA" ), f.cid2index(FR_TIPORIGA )); @@ -1761,6 +1855,10 @@ void TRiga_documento::autoload(TSheet_field & f) row.add( codmag.left(3), f.cid2index(FR_CODMAG )); row.add( codmag.mid(3), f.cid2index(FR_CODDEP )); row.add( get( "CODART" ), f.cid2index(FR_CODART )); + row.add( get( "LIVELLO" ), f.cid2index(FR_LIV1 )); // da modificare + row.add( get( "LIVELLO" ), f.cid2index(FR_LIV2 )); + row.add( get( "LIVELLO" ), f.cid2index(FR_LIV3 )); + row.add( get( "LIVELLO" ), f.cid2index(FR_LIV4 )); TString s(get("DESCR")); if (get_bool("DESCLUNGA")) s << get("DESCEST"); @@ -1908,6 +2006,21 @@ void TDocumento::copy_data(TRectype& dst, const TRectype& src) if (nriga > 0) dst.put("NRIGA", nriga); } + +void TDocumento::copy_contents(const TDocumento & src) +{ + copy_data(head(), src.head()); + destroy_rows(); + const int rows = src.physical_rows(); + + for (int i = 0; i < rows ; i++) + { + const TRiga_documento & s = src[i]; + TRiga_documento & r = new_row(s.tipo().codice()); + + copy_data(r, s); + } +} TRiga_documento& TDocumento::insert_row(int row, const char *tipo) { @@ -1953,6 +2066,8 @@ int TDocumento::read(const TRectype& rec) _rows.set_key(key); // ok } set_riga_sconto(); + if (is_fattura()) + set_riga_esenzione(); return err; } @@ -1993,18 +2108,14 @@ void TDocumento::set_riga_sconto() { if (_sconto == NULL) { - static TString _tipo_riga; - static long firm = -1; - long new_firm = main_app().get_firm(); - - if (firm != new_firm) + static TString _tipo_riga_sc; + if (_tipo_riga_sc.empty()) { - TConfig conf(CONFIG_DITTA); + TConfig conf(CONFIG_STUDIO); - _tipo_riga = conf.get("SCOTRIGA", "ve"); - firm = new_firm; + _tipo_riga_sc = conf.get("TRSCONTI", "ve"); } - _sconto = new TRiga_documento(this, _tipo_riga); + _sconto = new TRiga_documento(this, _tipo_riga_sc); _sconto->put("DESCR","Sconto"); } _sconto->put("SCONTO", sconto); @@ -2012,7 +2123,61 @@ void TDocumento::set_riga_sconto() } void TDocumento::set_riga_esenzione() -{ +{ + TCliFor & c = condv().clifo(); + const char tipo = get_char("TIPOCF"); + const long cod = get_long("CODCF"); + const TString80 occ(get("OCFPI")); + c.load(tipo, cod, occ); + const TIVA codes(c.get(LF_CFVEN, CLI_ASSFIS)); + const TString16 v_esenzione(c.get(LF_CFVEN, CLI_VSPROT)); + const TString16 v_data_esenzione(c.get(LF_CFVEN, CLI_VSDATAREG)); +// const TString16 ufficio_IVA; ?? + const TString16 n_registrazione(c.get(LF_CFVEN, CLI_NSPROT)); + const TString16 n_data_registrazione(c.get(LF_CFVEN, CLI_NSDATAREG)); + bool esente = codes.tipo().not_empty() && v_esenzione.not_empty() && + v_data_esenzione.not_empty() && n_registrazione.not_empty() && + n_data_registrazione.not_empty(); + + if (esente) + { + esente = FALSE; + const TString16 codiva(codes.codice()); + for (int i = physical_rows(); !esente && i > 0; i--) + esente = codiva == row(i).get("CODIVA"); + } + + if (!esente) + { + if(_esenzione != NULL) + delete _esenzione; + _esenzione = NULL; + } + else + { + static TString _tipo_riga_es; + static real _bollo_es; + if (_tipo_riga_es.empty()) + { + TConfig conf(CONFIG_STUDIO); + + _tipo_riga_es = conf.get("TRESENZ", "ve"); + _bollo_es = (real)conf.get("BOLLIES", "ve"); + } + if (_esenzione == NULL) + _esenzione = new TRiga_documento(this, _tipo_riga_es); + TString d(256); d.format("Fattura non imponibile come da vostra dichiarazion"); + + _esenzione->put( "DESCR", d); + + /* rilasciata dall' ufficio IVA di %s*/ + d.format("e n. %s del %s da noi annotata al n. %s il %s. Marca da bollo da Lit. %s sull' originale.", + (const char *) v_esenzione, (const char *) v_data_esenzione, + /*(const char *) ufficio_IVA, */(const char *) n_registrazione, + (const char *) n_data_registrazione, _bollo_es.string(".")); + _esenzione->put("DESCLUNGA", "X"); + _esenzione->put("DESCEST", d); + } } void TDocumento::dirty_fields() @@ -2168,7 +2333,7 @@ bool TDocumento::raggruppabile(const TDocumento& doc, TToken_string& campi) cons void TDocumento::set_fields(TAuto_variable_rectype & rec) { - if (get("TIPODOC").not_empty()) + if (tipo_valido()) { TTipo_documento & tipo_doc = (TTipo_documento &) tipo(); const TString16 tot_doc(tipo_doc.totale_doc()); @@ -2361,9 +2526,23 @@ void TDocumento::zero(const char * fieldname) void TDocumento::zero(char c) { reset_fields(*this); - TAuto_variable_rectype::zero(c); + TAuto_variable_rectype::zero(c); + destroy_rows(); } +TDocumento & TDocumento::operator =(const TDocumento & d) +{ + zero(); + operator=((TRectype &)d); + _rows = d._rows; + set_riga_sconto(); + if (is_fattura()) + set_riga_esenzione(); + set_relation(d._rel); + set_condv(d._condv); + return *this; +} + TRectype & TDocumento::operator =(const TRectype & r) { TRectype::operator=(r); @@ -2454,7 +2633,6 @@ void TDocumento::update_spese_aut(TString_array & spese_aut, bool preserve_old, const int nrow = sh->insert(-1, FALSE); riga.autoload(*sh); sh->check_row(nrow); -// sh->post_insert(nrow); } } } @@ -2745,6 +2923,114 @@ int TElaborazione::read(const char* cod) return err; } +/////////////////////////////////////////////////////////// +// TEsterna +/////////////////////////////////////////////////////////// + +TEsterna::TEsterna(const char* cod) + : TElaborazione(cod) +{ +} + +bool TEsterna::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, + const TDate& data_elab) +{ + CHECK(doc_in.items() == 1, "Si deve specificare uno e un solo documento in entrata"); + CHECK(doc_out.items() == 1, "Si deve specificare uno e un solo documento in uscita"); + TFilename name; name.temp("ext"); + { + TConfig c(name); + TDocumento & d = doc_in[0]; + int nfields = d.items(); + TString par; par.format("%d,0", LF_DOC); + + for (int i = 0; i < nfields; i++) + { + const TString16 fname(d.fieldname(i)); + TFieldref f(fname, LF_DOC); + + f.write(c, par, d.get(fname)); + } + for (TVariable_field * v = d.first_variable_field(); v ; v = d.succ_variable_field()) + c.set(v->name(), v->get(), par); + const int rows = d.physical_rows(); + if (rows > 0) + { + nfields = d[0].items(); + + for (int r = 0; r < rows; r++) + { + TRiga_documento row = d[r]; + + par.format("%d,%d", LF_RIGHEDOC, r + 1); + for (int i = 0; i < nfields; i++) + { + const TString16 fname(row.fieldname(i)); + TFieldref f(fname, LF_RIGHEDOC); + + f.write(c, par, row.get(fname)); + } + } + } + } + TString command_line(applicazione_esterna()); command_line << " -i " << name; + TExternal_app app(command_line); + if (app.run() == 0) + { + TConfig c(name); + TDocumento & d = doc_out[0]; + int nfields = d.items(); + TString par; par.format("%d,0", LF_DOC); + + for (int i = 0; i < nfields; i++) + { + const TString16 fname(d.fieldname(i)); + TFieldref f(fname, LF_DOC); + + d.put(fname, f.read(c, par)); + } + for (TVariable_field * v = d.first_variable_field(); v ; v = d.succ_variable_field()) + v->put(c.get(v->name(), par)); + + TString_array p; + + c.list_paragraphs(p); + nfields = d[0].items(); + d.destroy_rows(); + int r = 1 ; + par.format("%d,%d", LF_RIGHEDOC, r); + while (p.find(par) >= 0) + { + TRiga_documento row = d.new_row(); + for (int i = 0; i < nfields; i++) + { + const TString16 fname(row.fieldname(i)); + TFieldref f(fname, LF_RIGHEDOC); + + row.put(fname, f.read(c, par)); + } + r++; + par.format("%d,%d", LF_RIGHEDOC, r); + } + } + return TRUE; +} + +/////////////////////////////////////////////////////////// +// TConsegna ordini +/////////////////////////////////////////////////////////// + +TConsegna_ordini::TConsegna_ordini(const char* cod) + : TElaborazione(cod) +{ +} + +bool TConsegna_ordini::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, + const TDate& data_elab) +{ + return TRUE; +} + /////////////////////////////////////////////////////////// // TFatturazione bolle /////////////////////////////////////////////////////////// @@ -2948,3 +3234,142 @@ bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& do return ok; } +/////////////////////////////////////////////////////////// +// TContabilizzazione +/////////////////////////////////////////////////////////// + +TContabilizzazione::TContabilizzazione(const char* cod) + : TElaborazione(cod) +{ +} + +bool TContabilizzazione::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, + const TDate& data_elab) +{ + CHECK(doc_in.items() == 1, "Si deve specificare uno e un solo documento in entrata"); + CHECK(doc_out.items() == 1, "Si deve specificare uno e un solo documento in uscita"); + return TRUE; +} +/////////////////////////////////////////////////////////// +// TCopia_documento +/////////////////////////////////////////////////////////// + +TCopia_documento::TCopia_documento(const char* cod) + : TElaborazione(cod) +{ +} + +bool TCopia_documento::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, + const TDate& data_elab) +{ + CHECK(doc_in.items() == 1, "Si deve specificare uno e un solo documento in entrata"); + CHECK(doc_out.items() == 1, "Si deve specificare uno e un solo documento in uscita"); + TDocumento & doc_src = doc_in[0]; + TDocumento & doc_dest = doc_out[0]; + + doc_dest.copy_contents(doc_src); + return TRUE; +} + + +/////////////////////////////////////////////////////////// +// TGenerazione_effetti +/////////////////////////////////////////////////////////// + +TGenerazione_effetti::TGenerazione_effetti(const char* cod) + : TElaborazione(cod) +{ +} + +bool TGenerazione_effetti::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, + const TDate& data_elab) +{ + CHECK(doc_in.items() == 1, "Si deve specificare uno e un solo documento in entrata"); + CHECK(doc_out.items() == 1, "Si deve specificare uno e un solo documento in uscita"); + return TRUE; +} + +/////////////////////////////////////////////////////////// +// TLista_elaborazioni +/////////////////////////////////////////////////////////// + +void TLista_elaborazioni::read() +{ + if (_elab == NULL) + { + _elab = new TAssoc_array(); + + TTable eld("%ELD"); + + for (int err = eld.first(); err == NOERR; err = eld.next()) + { + TElaborazione * el = NULL; + switch (eld.curr().get_int("I0")) + { + case _esterna : + el = new TEsterna(eld.curr()); + break; + case _consegna_ordini: + el = new TConsegna_ordini(eld.curr()); + break; + case _fatturazione_bolle : + el = new TFatturazione_bolle(eld.curr()); + break; + case _contabilizzazione : + el = new TContabilizzazione(eld.curr()); + break; + case _copia_documento : + el = new TCopia_documento(eld.curr()); + break; + case _generazione_effetti : + el = new TGenerazione_effetti(eld.curr()); + break; + default : + break; + } + _elab->add(el->codice(), el); + } + } +} + +int TLista_elaborazioni::select(TString_array & result, bool interattivo, bool insert_mode, const char * tipo_iniziale, const char * stato_iniziale, const char * tipo_finale, const char * stato_finale) +{ + read(); + _elab->restart(); + result.destroy(); + for (TElaborazione * el = (TElaborazione *)_elab->get(); el ; el = (TElaborazione *) _elab->get()) + { + bool ok = TRUE; + if (tipo_iniziale && stato_iniziale) + { + bool found = FALSE; + for (int i = 0; !found && i < 5; i++) + found = el->tipo_iniziale(i) == tipo_iniziale && el->stato_iniziale(i) == *stato_iniziale; + ok = found; + } + ok &= (tipo_finale && stato_finale && el->tipo_finale() == tipo_finale && el->stato_finale() == *stato_finale); + if (ok && (!interattivo || interattivo == el->interattivo()) && + (!insert_mode || insert_mode == el->insert_mode())) + result.add(el->codice()); + } + return result.items(); +} + +TElaborazione & TLista_elaborazioni::operator [](const char * key) const +{ + ((TLista_elaborazioni *)this)->read(); + return (TElaborazione &) (*_elab)[key]; +} + +void TLista_elaborazioni::update() +{ + delete _elab; _elab = NULL; + read(); + +} + +TLista_elaborazioni::~TLista_elaborazioni() +{ + if (_elab) + delete _elab; +} diff --git a/ve/velib01.h b/ve/velib01.h index 2efda772f..af55b7f7b 100755 --- a/ve/velib01.h +++ b/ve/velib01.h @@ -160,10 +160,10 @@ class TFormula_documento : public TRectype TExpr_documento * _expr; protected: - int read(const char* codice); + int read(const char* codice, const char* expr = NULL, bool numexpr = TRUE); public: - TObject* dup() const { return new TFormula_documento(_tab == "%FRD" ? _documento : _riga, codice()); } + TObject* dup() const { return new TFormula_documento(_tab == "%FRD" ? _documento : _riga, codice(), NULL, TRUE); } public: const TString& codice() const { return get("CODTAB");} @@ -174,7 +174,7 @@ public: const TString& expr_string() const { return get("S1"); } TTypeexp expr_type() const { return get_bool("B0") ? _numexpr : _strexpr;} - TFormula_documento(TTipo_formula tipo = _documento, const char* codice = NULL); + TFormula_documento(TTipo_formula tipo = _documento, const char* codice = NULL, const char* expr = NULL, bool numexpr = TRUE); TFormula_documento(const TRectype& rec); virtual ~TFormula_documento(); }; @@ -182,7 +182,8 @@ public: class TTipo_documento : public TRectype { - + enum { _altro, _fattura, _bolla, _ordine}; + static TAssoc_array _formule_documento; TToken_string _formule; TString16 _imponibile; @@ -203,8 +204,14 @@ public: const TString& profile_name() const { return get("S4");} const TString& mask_name() const { return get("S4");} const TString& causale() const { return get("S6"); } + int tipo() const { return get_int("I1"); } const TString& codice() const { return get("CODTAB");} + bool is_generic() const { return tipo() == _altro; } + bool is_fattura() const { return tipo() == _fattura; } + bool is_bolla() const { return tipo() == _bolla; } + bool is_ordine() const { return tipo() == _ordine; } + const TString& descrizione() const { return get("S0"); } const TString& riferimento() const { return get("S1"); } const TString& imponibile() const { return _imponibile;} @@ -361,12 +368,14 @@ public: void set_condv(TCond_vendita * condv) { _condv = condv; } void set_relation(TRelation * rel) { _rel = rel; } + virtual TDocumento & operator =(const TDocumento & d); virtual TRectype & operator =(const TRectype & r); virtual TRectype & operator =(const char * r); virtual void zero(const char * fieldname); virtual void zero(char c = '\0'); - - int rows() const { return _rows.rows() + ((_sconto != NULL) ? 1 : 0) + ((_esenzione != NULL) ? 1 : 0); } + + int physical_rows() const { return _rows.rows(); } + int rows() const { return physical_rows() + ((_sconto != NULL) ? 1 : 0) + ((_esenzione != NULL) ? 1 : 0); } const TRiga_documento& operator[](int index) const { return (const TRiga_documento&)((TDocumento *)this)->row(index); } TRiga_documento& operator[](int index) { return (TRiga_documento&)row(index); } @@ -389,7 +398,8 @@ public: TDate data() const { return get_date("DATADOC"); } const bool in_valuta() const; const TString& valuta() const { return get("CODVAL"); } - const real cambio() { return get_real("CAMBIO"); } + const real cambio() const { return get_real("CAMBIO"); } + bool tipo_valido() const { return get("TIPODOC").not_empty(); } const TTipo_documento& tipo() const; void set_tipo(const char * tipo) { head().put("TIPODOC", tipo);} @@ -401,6 +411,7 @@ public: static void set_key(TRectype& rec, char provv, int anno, const char* codnum, long numdoc); static void copy_data(TRectype& dst, const TRectype& src); + void copy_contents(const TDocumento & src); void reset_fields(TAuto_variable_rectype & rec) { rec.remove_field(); } void set_fields(TAuto_variable_rectype & rec); @@ -421,6 +432,12 @@ public: void update_spese_aut(TString_array & spese, bool preserve_old = FALSE, TSheet_field * sh = NULL); + bool is_generic() const { return tipo_valido() && tipo().is_generic(); } + bool is_fattura() const { return tipo_valido() && tipo().is_fattura(); } + bool is_bolla() const { return tipo_valido() && tipo().is_bolla(); } + bool is_ordine() const { return tipo_valido() && tipo().is_ordine(); } + + TDocumento (); TDocumento(char provv, int anno, const char* codnum, long numdoc, TCond_vendita * condv = NULL, TRelation * rel = NULL); @@ -539,6 +556,8 @@ class TLista_fornitori : public TLista_clifo protected: virtual char tipo() const { return 'F'; } }; + +enum TTipo_elaborazione {_esterna, _consegna_ordini, _fatturazione_bolle, _contabilizzazione, _copia_documento, _generazione_effetti }; class TElaborazione : public TRectype { @@ -547,6 +566,7 @@ protected: public: const TString& codice() const { return get("CODTAB"); } + const TTipo_elaborazione tipo() const { return (TTipo_elaborazione) get_int("I0"); } bool doc_uguale(int u) const { return get("S1")[u] == 'X'; } bool riga_uguale(int u) const { return get("S1")[40+u] == 'X'; } @@ -554,9 +574,17 @@ public: bool gestione_riferimenti() const { return get_bool("B1"); } bool riferimenti_in_testa() const { return get_bool("B2"); } bool ignora_descrizioni() const { return get_bool("B3"); } + bool interattivo() const { return get_bool("B5"); } + bool insert_mode() const { return get_bool("B6"); } + + const TString& tipo_iniziale(int i) const { return get("S8").mid(i*4, 4); } + const char stato_iniziale(int i) const { return get("S9")[i]; } + const TString& tipo_finale() const { return get("S8"); } + const TString& stato_finale() const { return get("S9"); } char tipo_numerazione() const { return get_bool("B4") ? 'P' : 'D'; } const TString& codice_numerazione_finale() const { return get("S6"); } + const TString & applicazione_esterna() const { return get("S5"); } virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, const TDate& data_elab) pure; @@ -566,6 +594,28 @@ public: virtual ~TElaborazione() { } }; +class TEsterna : public TElaborazione +{ +public: + virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, + const TDate& data_elab); + + TEsterna(const char* cod); + TEsterna(const TRectype& rec) : TElaborazione(rec) { } + virtual ~TEsterna() { } +}; + +class TConsegna_ordini : public TElaborazione +{ +public: + virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, + const TDate& data_elab); + + TConsegna_ordini(const char* cod); + TConsegna_ordini(const TRectype& rec) : TElaborazione(rec) { } + virtual ~TConsegna_ordini() { } +}; + class TFatturazione_bolle : public TElaborazione { TToken_string _cod_desc; @@ -579,7 +629,57 @@ public: void stati_validi(TToken_string& stati) const; TFatturazione_bolle(const char* cod); + TFatturazione_bolle(const TRectype& rec) : TElaborazione(rec) { } virtual ~TFatturazione_bolle() { } }; +class TContabilizzazione : public TElaborazione +{ +public: + virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, + const TDate& data_elab); + + TContabilizzazione(const char* cod); + TContabilizzazione(const TRectype& rec) : TElaborazione(rec) { } + virtual ~TContabilizzazione() { } +}; + +class TCopia_documento : public TElaborazione +{ +public: + virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, + const TDate& data_elab); + + TCopia_documento(const char* cod); + TCopia_documento(const TRectype& rec) : TElaborazione(rec) { } + virtual ~TCopia_documento() { } +}; + + +class TGenerazione_effetti : public TElaborazione +{ +public: + virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, + const TDate& data_elab); + + TGenerazione_effetti(const char* cod); + TGenerazione_effetti(const TRectype& rec) : TElaborazione(rec) { } + virtual ~TGenerazione_effetti() { } +}; + +class TLista_elaborazioni : public TObject +{ + TAssoc_array * _elab; + +protected: + void read(); + +public: + TElaborazione & operator [](const char * key) const; + int select(TString_array & result, bool interattivo, bool insert_mode, const char * tipo_iniziale = NULL, const char * stato_iniziale = NULL, const char * tipo_finale = NULL, const char * stato_finale = NULL); + void update(); + TLista_elaborazioni() : _elab(NULL) {} + virtual ~TLista_elaborazioni(); +}; + #endif diff --git a/ve/velib02.cpp b/ve/velib02.cpp index 1451a1d7d..37e28f3c6 100755 --- a/ve/velib02.cpp +++ b/ve/velib02.cpp @@ -313,8 +313,8 @@ const char* TDocumentoEsteso::get_head_info(const TString & what) return (const char*) rt; } -TDocumentoEsteso::TDocumentoEsteso(const TRectype& rec, TCliFor *cli) - : TDocumento(rec), _sum_filter(-1), _sum_selected(FALSE), _scadenze_current(-1) +TDocumentoEsteso::TDocumentoEsteso(const TRectype& rec, TCond_vendita * condv) + : TDocumento(rec, condv), _sum_filter(-1), _sum_selected(FALSE), _scadenze_current(-1) { _iva = new TTable("%IVA"); // Inizializza i parametri di default @@ -323,8 +323,8 @@ TDocumentoEsteso::TDocumentoEsteso(const TRectype& rec, TCliFor *cli) _parm.imp_lit = 0; _parm.imp_val = 3; } -TDocumentoEsteso::TDocumentoEsteso(const TRectype& rec, dec_parm & parm, TCliFor *cli) - : TDocumento(rec), _sum_filter(-1), _sum_selected(FALSE), _scadenze_current(-1) +TDocumentoEsteso::TDocumentoEsteso(const TRectype& rec, dec_parm & parm, TCond_vendita * condv) + : TDocumento(rec, condv), _sum_filter(-1), _sum_selected(FALSE), _scadenze_current(-1) { _parm = parm; _iva = new TTable("%IVA"); diff --git a/ve/velib02.h b/ve/velib02.h index f07424e5d..86040f8d9 100755 --- a/ve/velib02.h +++ b/ve/velib02.h @@ -138,8 +138,8 @@ public: // Funzioni per settare i parametri void set_decimals(dec_parm & parm) { _parm = parm ; } void set_condv(TCliFor * cli); // Cambia le condizioni di vendita - TDocumentoEsteso (const TRectype & rec, dec_parm & parm, TCliFor * cli = NULL) ; - TDocumentoEsteso (const TRectype & rec, TCliFor * cli = NULL) ; + TDocumentoEsteso (const TRectype & rec, dec_parm & parm, TCond_vendita * condv = NULL) ; + TDocumentoEsteso (const TRectype & rec, TCond_vendita * condv = NULL) ; TDocumentoEsteso () ; ~TDocumentoEsteso(); }; diff --git a/ve/verig.h b/ve/verig.h index 66666aae6..b422f22d4 100755 --- a/ve/verig.h +++ b/ve/verig.h @@ -12,37 +12,41 @@ #define FR_CODSPQ 105 #define FR_CODSPP 105 #define FR_CODPRS 105 +#define FR_LIV1 106 +#define FR_LIV2 107 +#define FR_LIV3 108 +#define FR_LIV4 109 // DESCR DESCRART DESCRSPV DESCPSPQ DESCRSPP DESCRPRS alternativi definirne uno solo -#define FR_DESCR 106 -#define FR_DESCRART 106 -#define FR_DESCRSPV 106 -#define FR_DESCRSPQ 106 -#define FR_DESCRSPP 106 -#define FR_DESCRPRS 106 +#define FR_DESCR 110 +#define FR_DESCRART 110 +#define FR_DESCRSPV 110 +#define FR_DESCRSPQ 110 +#define FR_DESCRSPP 110 +#define FR_DESCRPRS 110 // UMQTA UMQTASP UMQTAPR alternativi definirne uno solo -#define FR_UMQTA 107 -#define FR_UMQTASP 107 +#define FR_UMQTA 111 +#define FR_UMQTASP 111 // QTA PERCSP alternativi definirne uno solo -#define FR_QTA 108 -#define FR_PERCSP 108 +#define FR_QTA 112 +#define FR_PERCSP 112 // PREZZO VALORE alternativi definirne uno solo -#define FR_PREZZO 109 -#define FR_VALORE 109 +#define FR_PREZZO 113 +#define FR_VALORE 113 -#define FR_QTAEVASA 110 -#define FR_RIGAEVASA 111 -#define FR_TARA 112 -#define FR_PNETTO 113 -#define FR_NCOLLI 114 -#define FR_DAEVADERE 115 -#define FR_SCONTO 116 -#define FR_PERCPROV 117 -#define FR_IMPFISUN 118 -#define FR_IMPFISSO 119 -#define FR_CODIVA 120 -#define FR_ADDIVA 121 -#define FR_ASPBENI 122 -#define FR_END 123 +#define FR_QTAEVASA 114 +#define FR_RIGAEVASA 115 +#define FR_TARA 116 +#define FR_PNETTO 117 +#define FR_NCOLLI 118 +#define FR_DAEVADERE 119 +#define FR_SCONTO 120 +#define FR_PERCPROV 121 +#define FR_IMPFISUN 122 +#define FR_IMPFISSO 123 +#define FR_CODIVA 124 +#define FR_ADDIVA 125 +#define FR_ASPBENI 126 +#define FR_END 127 #define MAX_COLUMNS FR_END-FR_STATORIGA #define FR_DESMAG 150 diff --git a/ve/verig.uml b/ve/verig.uml index 29f0e191d..864f2eecd 100755 --- a/ve/verig.uml +++ b/ve/verig.uml @@ -150,7 +150,7 @@ ENDIF ENDIF IFDEF(F_CODART) -ST FR_CODART 20 +STRING FR_CODART 20 BEGIN IFDEF(X_CODART) PROMPT X_CODART Y_CODART PR_CODART @@ -172,6 +172,89 @@ ENDIF FIELD CODART ADD RUN ve2 -3 END + +STRING FR_LIV1 10 +BEGIN +IFDEF(X_LIV1) + PROMPT X_LIV1 Y_LIV1 "" +ELSEIF + PROMPT 37 6 "" + FLAGS "U" + USE GCG + JOIN FCG ALIAS 500 INTO CODTAB==CODTAB[1,1] + INPUT CODTAB[1,1] "1" + INPUT CODTAB[2,] FR_LIV1 + DISPLAY "Livello@20" 500@->S0 + DISPLAY "Gruppo@10" CODTAB[2,] + DISPLAY "Descrizione@30" S0 + OUTPUT FR_LIV1 CODTAB[2,] + MESSAGE EMPTY RESET,FR_LIV2|RESET,FR_LIV3|RESET,FR_LIV4 + MESSAGE ENABLE,FR_LIV2 + CHECKTYPE NORMAL +ENDIF +END + +STRING FR_LIV2 6 +BEGIN +IFDEF(X_LIV2) + PROMPT X_LIV2 Y_LIV2 "" +ELSEIF + PROMPT 50 6 "" +ENDIF + FLAGS "U" + USE GCG + JOIN FCG ALIAS 500 INTO CODTAB==CODTAB[1,1] + INPUT CODTAB[1,1] "2" + INPUT CODTAB[2,] FR_LIV2 + DISPLAY "Livello@20" 500@->S0 + DISPLAY "Gruppo@10" CODTAB[2,] + DISPLAY "Descrizione@30" S0 + OUTPUT FR_LIV2 CODTAB[2,] + MESSAGE EMPTY RESET,FR_LIV3|RESET,FR_LIV4 + MESSAGE ENABLE,FR_LIV3 + CHECKTYPE NORMAL +END + +STRING FR_LIV3 6 +BEGIN +IFDEF(X_LIV3) + PROMPT X_LIV3 Y_LIV3 "" +ELSEIF + PROMPT 59 6 "" +ENDIF + FLAGS "U" + USE GCG + JOIN FCG ALIAS 500 INTO CODTAB==CODTAB[1,1] + INPUT CODTAB[1,1] "3" + INPUT CODTAB[2,] FR_LIV3 + DISPLAY "Livello@20" 500@->S0 + DISPLAY "Gruppo@10" CODTAB[2,] + DISPLAY "Descrizione@30" S0 + OUTPUT FR_LIV3 CODTAB[2,] + MESSAGE EMPTY RESET,FR_LIV4 + MESSAGE ENABLE,FR_LIV4 + CHECKTYPE NORMAL +END + +STRING FR_LIV4 6 +BEGIN +IFDEF(X_LIV4) + PROMPT X_LIV4 Y_LIV4 "" +ELSEIF + PROMPT 67 6 "" +ENDIF + FLAGS "U" + USE GCG + JOIN FCG ALIAS 500 INTO CODTAB==CODTAB[1,1] + INPUT CODTAB[1,1] "4" + INPUT CODTAB[2,] FR_LIV4 + DISPLAY "Livello@20" 500@->S0 + DISPLAY "Gruppo@10" CODTAB[2,] + DISPLAY "Descrizione@30" S0 + OUTPUT FR_LIV4 CODTAB[2,] + CHECKTYPE NORMAL +END + ENDIF IFDEF(F_CODSPV) diff --git a/ve/verig01.ini b/ve/verig01.ini index c7eafc59e..bfe1d70cc 100755 --- a/ve/verig01.ini +++ b/ve/verig01.ini @@ -3,7 +3,6 @@ CALCOLI=IMPLN|IMPN|IMPNN|IMPNS|IMPOSTA|PREZZOLN|PREZZOLS|PREZZONN|PROVVR|SCONTOR CAMPICALC= IMPONIBILE=IMPNS -IMPOSTA=IMPOSTA [HANDLERS] NHANDLER = 0 diff --git a/ve/verig02.ini b/ve/verig02.ini index 661c2fce4..1459b5923 100755 --- a/ve/verig02.ini +++ b/ve/verig02.ini @@ -3,7 +3,6 @@ CALCOLI=IMPLN|IMPN|IMPNN|IMPNS|IMPOSTA|PREZZOLN|PREZZOLS|PREZZONN|PREZZONS|SCONTOR CAMPICALC= IMPONIBILE=IMPNS -IMPOSTA=IMPOSTA [HANDLERS] NHANDLER = 0 diff --git a/ve/verig03.ini b/ve/verig03.ini index ddbf40f0f..74c106a8e 100755 --- a/ve/verig03.ini +++ b/ve/verig03.ini @@ -3,7 +3,6 @@ CALCOLI=IMPLN|IMPN|IMPNN|IMPNS|IMPOSTA|PREZZOLN|PREZZOLS|PREZZONN|PREZZONS|SCONTOR CAMPICALC= IMPONIBILE=IMPNS -IMPOSTA=IMPOSTA [HANDLERS] NHANDLER = 0 diff --git a/ve/verig04.ini b/ve/verig04.ini index d956eb419..50a282132 100755 --- a/ve/verig04.ini +++ b/ve/verig04.ini @@ -3,7 +3,6 @@ CALCOLI=IMPLN|IMPN|IMPNN|IMPOSTA|PREZZOLN CAMPICALC= IMPONIBILE=IMPNN -IMPOSTA=IMPOSTA [HANDLERS] NHANDLER = 0 diff --git a/ve/verig05.ini b/ve/verig05.ini index f49937996..503184af1 100755 --- a/ve/verig05.ini +++ b/ve/verig05.ini @@ -3,7 +3,6 @@ CALCOLI= CAMPICALC= IMPONIBILE= -IMPOSTA= [HANDLERS] NHANDLER = 0 diff --git a/ve/verig06.ini b/ve/verig06.ini index f4075c851..a3c576d56 100755 --- a/ve/verig06.ini +++ b/ve/verig06.ini @@ -3,7 +3,6 @@ CALCOLI=IMPLN|IMPN|IMPNN|IMPNS|IMPOSTA|PREZZOLN|PREZZOLS|PREZZONN|PREZZONS|SCONTOR CAMPICALC= IMPONIBILE=IMPNS -IMPOSTA=IMPOSTA [HANDLERS] NHANDLER = 0 diff --git a/ve/verig07.ini b/ve/verig07.ini index f6eaad10d..7f92dd6ca 100755 --- a/ve/verig07.ini +++ b/ve/verig07.ini @@ -3,7 +3,6 @@ CALCOLI=IMPLN|IMPN|IMPNN|IMPOSTA CAMPICALC= IMPONIBILE=IMPNN -IMPOSTA=IMPOSTA [HANDLERS] NHANDLER = 0 diff --git a/ve/verig08.ini b/ve/verig08.ini index 3768bd687..6ad045a75 100755 --- a/ve/verig08.ini +++ b/ve/verig08.ini @@ -3,7 +3,6 @@ CALCOLI=IMPLN|IMPN|IMPNN|IMPOSTA CAMPICALC= IMPONIBILE=IMPNN -IMPOSTA=IMPOSTA [HANDLERS] NHANDLER = 0 diff --git a/ve/verig09.ini b/ve/verig09.ini index 30aef7cd4..86cdf6190 100755 --- a/ve/verig09.ini +++ b/ve/verig09.ini @@ -3,7 +3,6 @@ CALCOLI=IMPLN|IMPN|IMPNN|IMPOSTA|PREZZOLN|PREZZONN|PREZZONS CAMPICALC= IMPONIBILE=IMPNN -IMPOSTA=IMPOSTA [HANDLERS] NHANDLER = 0 diff --git a/ve/verig09.uml b/ve/verig09.uml index dc28a5d93..51e8b9126 100755 --- a/ve/verig09.uml +++ b/ve/verig09.uml @@ -1,30 +1,30 @@ -#include "verigdef.h" - -#define FULL_SCREEN -// else -// #define MASK_WIDTH 60 -// #define MASK_HEIGHT 14 -// -#define MASK_TITLE1 "Omaggio" - - -DEFINE_FIELD(CODMAG) -// F_POS(CODMAG, 2, 3, "Magazzino ") -// F_FLG(CODMAG, "U") -// F_CHK(CODMAG, REQUIRED) -DEFINE_FIELD(DESMAG) -DEFINE_FIELD(CODDEP) -DEFINE_FIELD(DESDEP) -DEFINE_FIELD(CODART) -DEFINE_FIELD(DESCRART) -DEFINE_FIELD(UMQTA) -DEFINE_FIELD(QTA) -DEFINE_FIELD(PREZZO) -DEFINE_FIELD(CODIVA) -F_POS(CODIVA, 2, 11,"Cod. IVA " ) -DEFINE_FIELD(DESIVA) -F_POS(DESIVA, 22, 11,"" ) - -#include "verig.uml" - - \ No newline at end of file +#include "verigdef.h" + +#define FULL_SCREEN +// else +// #define MASK_WIDTH 60 +// #define MASK_HEIGHT 14 +// +#define MASK_TITLE1 "Omaggio" + + +DEFINE_FIELD(CODMAG) +// F_POS(CODMAG, 2, 3, "Magazzino ") +// F_FLG(CODMAG, "U") +// F_CHK(CODMAG, REQUIRED) +DEFINE_FIELD(DESMAG) +DEFINE_FIELD(CODDEP) +DEFINE_FIELD(DESDEP) +DEFINE_FIELD(CODART) +DEFINE_FIELD(DESCRART) +DEFINE_FIELD(UMQTA) +DEFINE_FIELD(QTA) +DEFINE_FIELD(PREZZO) +DEFINE_FIELD(CODIVA) +F_POS(CODIVA, 2, 11,"Cod. IVA " ) +DEFINE_FIELD(DESIVA) +F_POS(DESIVA, 22, 11,"" ) +DEFINE_FIELD(ADDIVA) + +#include "verig.uml" +