From 8657d05879ab62b722df6961289bdad3277ec463 Mon Sep 17 00:00:00 2001 From: angelo Date: Fri, 9 Aug 1996 13:00:43 +0000 Subject: [PATCH] Aggiunta la gestione del prezzo netto/lordo, sconto cod. IVA ridotta e provvigione. git-svn-id: svn://10.65.10.50/trunk@3364 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ve/ve2400.cpp | 49 +++++++++++++++-- ve/ve2400.h | 5 ++ ve/ve2400.uml | 139 +++++++++++++++++++++++++++++-------------------- ve/ve2400a.uml | 13 +++++ 4 files changed, 147 insertions(+), 59 deletions(-) diff --git a/ve/ve2400.cpp b/ve/ve2400.cpp index b96245368..62b53c643 100755 --- a/ve/ve2400.cpp +++ b/ve/ve2400.cpp @@ -1,11 +1,10 @@ - #include #include #include #include #include #include - +#include "velib01.h" #include "ve2400.h" @@ -37,13 +36,14 @@ class TAnagrafica_magazzino: public TRelation_application { static bool handle_sheet1(TMask_field &, KEY); // handler dello sheet delle descrizioni in lingua static bool handle_sheet2(TMask_field &, KEY); // handler dello sheer dei codici alternativi static bool handle_sheet0_um(TMask_field &, KEY); // handler del campo UM dello sheet delle unità di misura + static bool handle_sheet0_price(TMask_field &, KEY); // handler del campo PREZZO e PREZZO_LORDO dello sheet delle unità di misura public: TAnagrafica_magazzino() {} virtual ~TAnagrafica_magazzino() {} }; - +inline TAnagrafica_magazzino& app() { return (TAnagrafica_magazzino&) main_app(); } bool TAnagrafica_magazzino::user_create() { @@ -56,6 +56,8 @@ bool TAnagrafica_magazzino::user_create() TSheet_field &f= (TSheet_field &)_msk->field(F_SHEET0); TMask &fm= f.sheet_mask(); fm.set_handler(FS_CODUM, handle_sheet0_um); + fm.set_handler(FS_PREZZO, handle_sheet0_price); + fm.set_handler(FS_PREZZO_LORDO, handle_sheet0_price); _rel= new TRelation(LF_ANAMAG); _umart= new TLocalisamfile(LF_UMART); @@ -88,6 +90,8 @@ int TAnagrafica_magazzino::read(TMask& m) { TSheet_field &f0= (TSheet_field &)m.field(F_SHEET0); // prende il sheet delle unità di misura TRectype rum(_umart->curr()); // prende il record corrente dal file delle unità di misura + TString codiva(m.get(F_CODIVA)); + real netto = 0.0, lordo = 0.0; f0.destroy(); // cancella lo sheet rum.zero(); @@ -102,6 +106,11 @@ int TAnagrafica_magazzino::read(TMask& m) row = ""; row.add(rec.get("UM")); // imposta la riga dello sheet con i campi del record della riga corrente row.add(rec.get("FC")); + row.add(rec.get("PREZZO")); + netto = real(rec.get("PREZZO")); + lordo = netto2lordo(netto,codiva); + row.add(lordo.string()); + } if (f0.items() == 0) ((TToken_string &)f0.row(0)) = "|1"; // aggiunge una riga allo sheet @@ -183,6 +192,7 @@ int TAnagrafica_magazzino::write(const TMask& m) rec.put("UM", um); rec.put("FC", row.get()); + rec.put("PREZZO", row.get()); } } err = _linee_rec0->write(); @@ -257,6 +267,7 @@ int TAnagrafica_magazzino::rewrite(const TMask& m) rec.put("UM", um); rec.put("FC", row.get()); + rec.put("PREZZO", row.get()); } } @@ -472,6 +483,38 @@ bool TAnagrafica_magazzino::handle_sheet0_um(TMask_field &fld, KEY k) return TRUE; } +bool TAnagrafica_magazzino::handle_sheet0_price(TMask_field &f, KEY k) +{ + if (f.to_check(k,TRUE)) + { + TMask& m = f.mask(); + TString codiva = app()._msk->get(F_CODIVA); + real netto = 0.0; + real lordo = 0.0; + + if (f.dlg() == FS_PREZZO) + { + netto = real(m.get(FS_PREZZO)); + lordo = netto2lordo(netto,codiva); + m.set(FS_PREZZO_LORDO,lordo.string()); + } + else + { + lordo = real(m.get(FS_PREZZO_LORDO)); + real prec_lordo = lordo; + netto = lordo2netto(lordo,codiva); + if (lordo != prec_lordo) + { + warning_box("Scorporando l'iva dal prezzo lordo si e' dovuto\n" + "correggere quest'ultimo a causa di arrotondamenti."); + m.set(FS_PREZZO_LORDO,lordo.string()); + } + m.set(FS_PREZZO,netto.string()); + } + } + return TRUE; +} + int ve2400(int argc, char* argv[]) { TAnagrafica_magazzino a; diff --git a/ve/ve2400.h b/ve/ve2400.h index 55c4b0b5e..8b3217261 100755 --- a/ve/ve2400.h +++ b/ve/ve2400.h @@ -49,6 +49,9 @@ #define F_TIPOCF 157 #define F_LINEAPROD 158 #define F_LINEAPROD1 159 +#define F_CODIVAR 160 +#define F_SCONTO 161 +#define F_PROVV 162 #define F_SHEET0 200 #define F_SHEET1 201 @@ -56,6 +59,8 @@ #define FS_CODUM 101 #define FS_FCUM 102 +#define FS_PREZZO 103 +#define FS_PREZZO_LORDO 104 #define FS_CODLIN 101 #define FS_DESCR 102 diff --git a/ve/ve2400.uml b/ve/ve2400.uml index b01d7b81a..ef19a461a 100755 --- a/ve/ve2400.uml +++ b/ve/ve2400.uml @@ -168,16 +168,42 @@ BEGIN OUTPUT F_GRMERC3D S0 END -SPREADSHEET F_SHEET0 77 4 +STRING F_CODIVA 4 BEGIN - PROMPT 1 8 "" - ITEM " U.M. @2" - ITEM "Fattore conversione@30" + PROMPT 1 8 "Codice IVA " + FIELD LF_ANAMAG->CODIVA + USE %IVA + INPUT CODTAB F_CODIVA + DISPLAY "Codice " CODTAB + DISPLAY "Descrizione@40" S0 + OUTPUT F_CODIVA CODTAB + OUTPUT F_CODIVA1 S0 + CHECKTYPE NORMAL +END + +STRING F_CODIVA1 50 +BEGIN + PROMPT 26 8 "" + USE %IVA KEY 2 + INPUT S0 F_CODIVA1 + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice " CODTAB + OUTPUT F_CODIVA CODTAB + OUTPUT F_CODIVA1 S0 +END + +SPREADSHEET F_SHEET0 77 5 +BEGIN + PROMPT 1 9 "" + ITEM "U.M." + ITEM "F. conversione" + ITEM "Prezzo netto@18" + ITEM "Prezzo lordo@18" END STRING F_CATCONA 3 BEGIN - PROMPT 1 13 "Categoria conto acquisti " + PROMPT 1 15 "Categoria conto acquisti " FIELD LF_ANAMAG->CATCONA GROUP 11 MESSAGE CLEAR,12@ @@ -197,7 +223,7 @@ END STRING F_CATCONA1 40 BEGIN - PROMPT 36 13 "" + PROMPT 36 15 "" FLAG "D" GROUP 11 USE CAA KEY 2 @@ -212,7 +238,7 @@ END STRING F_GRUPPOA 2 BEGIN - PROMPT 1 14 "Conto d'acquisto " + PROMPT 1 16 "Conto d'acquisto " FIELD LF_ANAMAG->GRUPPOA GROUP 12 MESSAGE CLEAR,11@ @@ -221,14 +247,14 @@ END STRING F_CONTOA 2 BEGIN - PROMPT 22 14 "" + PROMPT 22 16 "" FIELD LF_ANAMAG->CONTOA GROUP 12 END STRING F_SOTTOCA 6 BEGIN - PROMPT 26 14 "" + PROMPT 26 16 "" FIELD LF_ANAMAG->SOTTOCA GROUP 12 USE LF_PCON @@ -248,7 +274,7 @@ END STRING F_DESCRA 40 BEGIN - PROMPT 36 14 "" + PROMPT 36 16 "" FLAG "D" GROUP 12 USE LF_PCON KEY 2 @@ -264,7 +290,7 @@ END STRING F_CATCONV 3 BEGIN - PROMPT 1 15 "Categoria conto vendite " + PROMPT 1 17 "Categoria conto vendite " FIELD LF_ANAMAG->CATCONV GROUP 21 MESSAGE CLEAR,22@ @@ -284,7 +310,7 @@ END STRING F_CATCONV1 40 BEGIN - PROMPT 36 15 "" + PROMPT 36 17 "" FLAG "D" GROUP 21 USE CRA KEY 2 @@ -299,7 +325,7 @@ END STRING F_GRUPPOV 2 BEGIN - PROMPT 1 16 "Conto di vendita " + PROMPT 1 18 "Conto di vendita " FIELD LF_ANAMAG->GRUPPOV GROUP 22 MESSAGE CLEAR,21@ @@ -308,14 +334,14 @@ END STRING F_CONTOV 2 BEGIN - PROMPT 22 16 "" + PROMPT 22 18 "" FIELD LF_ANAMAG->CONTOV GROUP 22 END STRING F_SOTTOCV 6 BEGIN - PROMPT 26 16 "" + PROMPT 26 18 "" FIELD LF_ANAMAG->SOTTOCV GROUP 22 USE LF_PCON @@ -335,7 +361,7 @@ END STRING F_DESCRV 40 BEGIN - PROMPT 36 16 "" + PROMPT 36 18 "" FLAG "D" GROUP 22 USE LF_PCON KEY 2 @@ -349,19 +375,19 @@ END STRING F_UMP 3 BEGIN - PROMPT 1 17 "U.M. peso " + PROMPT 1 19 "U.M. peso " FIELD LF_ANAMAG->UMP END NUMBER F_PESO 15 5 BEGIN - PROMPT 30 17 "Peso " + PROMPT 30 19 "Peso " FIELD LF_ANAMAG->PESO END STRING F_CLASSDOG 10 BEGIN - PROMPT 1 18 "Classe doganale " + PROMPT 1 20 "Classe doganale " FIELD LF_ANAMAG->CLASSDOG FLAG "UZ" USE %CLD @@ -375,40 +401,15 @@ END STRING F_CLASSDOG1 40 BEGIN - PROMPT 36 18 "" + PROMPT 36 20 "" FLAG "D" END ENDPAGE - PAGE "Pagina 2 " 0 0 70 20 -STRING F_CODIVA 4 -BEGIN - PROMPT 2 1 "Codice IVA " - FIELD LF_ANAMAG->CODIVA - USE %IVA - INPUT CODTAB F_CODIVA - DISPLAY "Codice " CODTAB - DISPLAY "Descrizione@40" S0 - OUTPUT F_CODIVA CODTAB - OUTPUT F_CODIVA1 S0 - CHECKTYPE NORMAL -END - -STRING F_CODIVA1 40 -BEGIN - PROMPT 29 1 "" - USE %IVA KEY 2 - INPUT S0 F_CODIVA1 - DISPLAY "Descrizione@40" S0 - DISPLAY "Codice " CODTAB - OUTPUT F_CODIVA CODTAB - OUTPUT F_CODIVA1 S0 -END - LISTBOX F_TIPOCF 20 BEGIN PROMPT 0 0 "" @@ -418,7 +419,7 @@ END NUMBER F_CODFORN 6 BEGIN - PROMPT 2 2 "Codice fornitore " + PROMPT 2 1 "Codice fornitore " FIELD LF_ANAMAG->CODFORN USE LF_CLIFO INPUT TIPOCF F_TIPOCF SELECT @@ -431,13 +432,13 @@ END NUMBER F_COSTSTD 18 0 BEGIN - PROMPT 37 2 "Costo standard " + PROMPT 37 1 "Costo standard " FIELD LF_ANAMAG->COSTSTD END STRING F_CODFORN1 50 BEGIN - PROMPT 2 3 "Ragione sociale " + PROMPT 2 2 "Ragione sociale " USE LF_CLIFO KEY 2 INPUT TIPOCF F_TIPOCF SELECT INPUT RAGSOC F_CODFORN1 @@ -449,7 +450,7 @@ END BOOLEAN F_ARTFIS BEGIN - PROMPT 2 4 "Articolo fiscale " + PROMPT 2 3 "Articolo fiscale" FIELD LF_ANAMAG->ARTFIS MESSAGE TRUE ENABLE,23@ MESSAGE FALSE DISABLE,23@ @@ -457,7 +458,7 @@ END STRING F_RAGGFIS 5 BEGIN - PROMPT 2 5 "Raggrupp. fiscale " + PROMPT 2 4 "Raggrupp. fiscale " FIELD LF_ANAMAG->RAGGFIS USE %RFA JOIN %ASF ALIAS 200 INTO CODTAB=S8 @@ -474,13 +475,13 @@ END STRING F_RAGGFIS1 40 BEGIN - PROMPT 31 5 "" + PROMPT 31 4 "" FLAG "D" END STRING F_CLASSEFIS 1 BEGIN - PROMPT 2 6 "Classe fiscale " + PROMPT 2 5 "Classe fiscale " FIELD LF_ANAMAG->CLASSEFIS USE %ASF INPUT CODTAB F_CLASSEFIS @@ -494,26 +495,52 @@ END STRING F_CLASSEFIS1 40 BEGIN - PROMPT 31 6 "" + PROMPT 31 5 "" FLAG "D" END +STRING F_SCONTO 25 +BEGIN + FIELD LF_ANAMAG->SCONTO + PROMPT 2 6 "Sconto " +END + +STRING F_CODIVAR 4 +BEGIN + PROMPT 45 6 "Codice IVA ridotta " + FIELD LF_ANAMAG->CODIVAR + USE %IVA + INPUT CODTAB F_CODIVAR + DISPLAY "Codice " CODTAB + DISPLAY "Descrizione@40" S0 + OUTPUT F_CODIVAR CODTAB + CHECKTYPE NORMAL +END + +NUMBER F_PROVV 5 2 +BEGIN + FIELD LF_ANAMAG->PROVV + PROMPT 2 7 "Provvigione " + NUM_EXPR (#F_PROVV>=0)&&(#F_PROVV<=100) + WARNING "La percentuale di provvigione deve essere compresa tra 0 e 100" +END + BOOLEAN F_ARTPROD BEGIN - PROMPT 2 7 "Articolo di produzione " + PROMPT 2 8 "Articolo di produzione " FIELD LF_ANAMAG->ARTPROD END SPREADSHEET F_SHEET1 71 5 BEGIN - PROMPT 2 8 "" + PROMPT 2 10 "" ITEM "Cod. lingua" ITEM "Descrizione@50" END SPREADSHEET F_SHEET2 71 5 BEGIN - PROMPT 2 14 "" + PROMPT 2 16 "" ITEM "Cod. art.@20" ITEM "Tipo@10" END diff --git a/ve/ve2400a.uml b/ve/ve2400a.uml index d8c4496c9..6ff4ec6aa 100755 --- a/ve/ve2400a.uml +++ b/ve/ve2400a.uml @@ -25,6 +25,19 @@ BEGIN WARNING "Fattore di conversione obbligatorio" END +NUMBER FS_PREZZO 15 +BEGIN + PROMPT 3 5 "Prezzo netto " + FIELD LF_UMART->PREZZO + PICTURE "###.###.###.###" +END + +NUMBER FS_PREZZO_LORDO 15 +BEGIN + PROMPT 3 6 "Prezzo lordo " + PICTURE "###.###.###.###" +END + BUTTON DLG_OK 9 2 BEGIN PROMPT -13 -1 ""