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
This commit is contained in:
angelo 1996-08-09 13:00:43 +00:00
parent 7f531db4c2
commit 8657d05879
4 changed files with 147 additions and 59 deletions

View File

@ -1,11 +1,10 @@
#include <relapp.h>
#include <tabutil.h>
#include <msksheet.h>
#include <assoc.h>
#include <checks.h>
#include <defmask.h>
#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;

View File

@ -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

View File

@ -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

View File

@ -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 ""