Corretta gestione valuta e clienti occasionali.
git-svn-id: svn://10.65.10.50/trunk@301 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
254d6b64fb
commit
12dd4aadd3
@ -25,7 +25,7 @@ BEGIN
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT FLD_CM1_GRUPPO GRUPPO
|
||||
HELP "Inserire il gruppo"
|
||||
OUTPUT FLD_CM1_DESC DESCR
|
||||
VALIDATE NOT_EMPTY_FUNC
|
||||
END
|
||||
|
||||
@ -43,7 +43,7 @@ BEGIN
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT FLD_CM1_GRUPPO GRUPPO
|
||||
OUTPUT FLD_CM1_CONTO CONTO
|
||||
HELP "Inserire il conto"
|
||||
OUTPUT FLD_CM1_DESC DESCR
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_SOTTOCONTO 6
|
||||
@ -64,7 +64,6 @@ BEGIN
|
||||
OUTPUT FLD_CM1_GRUPPO GRUPPO
|
||||
OUTPUT FLD_CM1_CONTO CONTO
|
||||
OUTPUT FLD_CM1_DESC DESCR
|
||||
HELP "Inserire il sottoconto"
|
||||
END
|
||||
|
||||
STRING FLD_CM1_DESC 50
|
||||
@ -80,8 +79,8 @@ BEGIN
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto " SOTTOCONTO
|
||||
COPY OUTPUT FLD_CM1_SOTTOCONTO
|
||||
HELP "Inserire la descrizione del conto"
|
||||
CHECKTYPE REQUIRED
|
||||
HELP "Descrizione del conto"
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_CODTABANALISI 10
|
||||
@ -89,7 +88,6 @@ BEGIN
|
||||
PROMPT 4 5 "Codice Tabella Analisi "
|
||||
FIELD LF_PCON->CODCBL
|
||||
FLAGS "R"
|
||||
HELP "Inserisci il codice "
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_CODANALISIH 10
|
||||
|
@ -564,7 +564,7 @@ bool CG1200_App::set_print(int)
|
||||
if (_pr_type != etichette)
|
||||
{
|
||||
set_multiple_link(TRUE);
|
||||
enable_link("Collegamento Archivio clienti e fornitori : ", 'r');
|
||||
enable_link("Collegamento clienti e fornitori : ", 'r');
|
||||
}
|
||||
|
||||
_sort = mask.get_int(RDB_CG12_SORT);
|
||||
@ -584,7 +584,7 @@ bool CG1200_App::set_print(int)
|
||||
tr1.put(CLI_TIPOCF, _pr_what == clienti ? "C" : "F");
|
||||
tr2.put(CLI_TIPOCF, _pr_what == clienti ? "C" : "F");
|
||||
short fromid, toid;
|
||||
TString nome_campo(12);
|
||||
TString16 nome_campo;
|
||||
|
||||
if (_sort == 1)
|
||||
{
|
||||
@ -598,8 +598,8 @@ bool CG1200_App::set_print(int)
|
||||
toid = (_pr_what == clienti) ? FLD_CLI_RAGSOCTO : FLD_FOR_RAGSOCTO;
|
||||
nome_campo = CLI_RAGSOC;
|
||||
}
|
||||
const TString cod_from(mask.get(fromid));
|
||||
const TString cod_to(mask.get(toid));
|
||||
const TString16 cod_from(mask.get(fromid));
|
||||
const TString16 cod_to(mask.get(toid));
|
||||
|
||||
if (cod_from.not_empty()) tr1.put(nome_campo, cod_from);
|
||||
if (cod_to.not_empty()) tr2.put(nome_campo, cod_to);
|
||||
@ -655,6 +655,6 @@ bool CG1200_App::destroy()
|
||||
int cg1200(int argc, char* argv[])
|
||||
{
|
||||
CG1200_App app;
|
||||
app.run(argc, argv, "Stampe Clienti/Fornitori");
|
||||
app.run(argc, argv, "Stampa Clienti/Fornitori");
|
||||
return 0;
|
||||
}
|
||||
|
@ -7,11 +7,11 @@ BEGIN
|
||||
PROMPT 4 1 "Oggetto"
|
||||
HELP "Selezionare l'archivio che si desidera stampare"
|
||||
ITEM "1|Clienti"
|
||||
MESSAGE HIDE,2@|SHOW,1@|RESET,2@
|
||||
MESSAGE CLEAR,2@|SHOW,1@
|
||||
ITEM "2|Fornitori"
|
||||
MESSAGE HIDE,1@|SHOW,2@|RESET,1@
|
||||
MESSAGE CLEAR,1@|SHOW,2@
|
||||
ITEM "3|Entrambi"
|
||||
MESSAGE HIDE,1@|HIDE,2@|RESET,1@
|
||||
MESSAGE CLEAR,1@|CLEAR,2@
|
||||
END
|
||||
|
||||
RADIOBUTTON RDB_CG12_SORT 22
|
||||
@ -59,7 +59,7 @@ BEGIN
|
||||
DISPLAY "Codice Fiscale@16" COFI
|
||||
DISPLAY "Ragione sociale@50" RAGSOC
|
||||
OUTPUT FLD_CLI_CODFR CODCF
|
||||
GROUP 1 3
|
||||
GROUP 1 3
|
||||
HELP "Introdurre codice di inizio stampa: vuoto = inizio archivio"
|
||||
END
|
||||
|
||||
@ -71,7 +71,7 @@ BEGIN
|
||||
INPUT CODCF FLD_CLI_CODTO
|
||||
COPY DISPLAY FLD_CLI_CODFR
|
||||
OUTPUT FLD_CLI_CODTO CODCF
|
||||
GROUP 1 3
|
||||
GROUP 1 3
|
||||
HELP "Introdurre codice di fine stampa: vuoto = fine archivio"
|
||||
NUM_EXPR {(#THIS_FIELD == 0) || (#THIS_FIELD >= #FLD_CLI_CODFR)}
|
||||
WARNING "Limite superiore errato"
|
||||
@ -87,7 +87,7 @@ BEGIN
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Codice Fiscale@16" COFI
|
||||
OUTPUT FLD_CLI_RAGSOCFR RAGSOC
|
||||
GROUP 1 4
|
||||
GROUP 1 4
|
||||
HELP "Introdurre rag. soc. di inizio stampa: vuoto = inizio archivio"
|
||||
END
|
||||
|
||||
@ -98,7 +98,7 @@ BEGIN
|
||||
INPUT RAGSOC FLD_CLI_RAGSOCTO
|
||||
COPY DISPLAY FLD_CLI_RAGSOCFR
|
||||
OUTPUT FLD_CLI_RAGSOCTO RAGSOC
|
||||
GROUP 1 4
|
||||
GROUP 1 4
|
||||
HELP "Introdurre ragione soc. di fine stampa: vuoto = fine archivio"
|
||||
STR_EXPR {(#THIS_FIELD == "") || (#THIS_FIELD >= #FLD_CLI_RAGSOCFR)}
|
||||
WARNING "Limite superiore errato"
|
||||
@ -178,19 +178,19 @@ END
|
||||
BUTTON BUT_CG12_ELENCO 9 2
|
||||
BEGIN
|
||||
PROMPT 4 14 "~Elenco"
|
||||
MESSAGE EXIT,BUT_CG12_ELENCO
|
||||
MESSAGE EXIT,BUT_CG12_ELENCO
|
||||
END
|
||||
|
||||
BUTTON BUT_CG12_RUBRICHE 9 2
|
||||
BEGIN
|
||||
PROMPT 16 14 "~Rubriche"
|
||||
MESSAGE EXIT,BUT_CG12_RUBRICHE
|
||||
MESSAGE EXIT,BUT_CG12_RUBRICHE
|
||||
END
|
||||
|
||||
BUTTON BUT_CG12_ETICHETTE 9 2
|
||||
BEGIN
|
||||
PROMPT 28 14 "E~tichette"
|
||||
MESSAGE EXIT,BUT_CG12_ETICHETTE
|
||||
MESSAGE EXIT,BUT_CG12_ETICHETTE
|
||||
END
|
||||
|
||||
BUTTON BUT_CG12_VENDITE 9 2
|
||||
|
@ -12,7 +12,6 @@
|
||||
#include <causali.h>
|
||||
#include <rcausali.h>
|
||||
|
||||
|
||||
TPrimanota_application::TPrimanota_application()
|
||||
: _rel(NULL), _lastreg(0), _mode(0), _iva(nessuna_iva)
|
||||
{
|
||||
@ -99,8 +98,8 @@ if (n == 1 || n == 2)
|
||||
cgm.set_handler(102, dareavere_handler);
|
||||
cgm.set_handler(105, suspended_handler);
|
||||
cgm.set_handler(106, suspended_handler);
|
||||
cgm.set_handler(206, suspended_handler);
|
||||
cgm.set_handler(306, suspended_handler);
|
||||
cgm.set_handler(206, cg_clifo_handler);
|
||||
cgm.set_handler(306, cg_clifo_handler);
|
||||
cgm.set_handler(112, suspended_handler);
|
||||
cgm.set_handler(113, suspended_handler);
|
||||
cgm.set_handler(213, suspended_handler);
|
||||
@ -128,10 +127,9 @@ bool TPrimanota_application::user_create()
|
||||
_rel = new TMovimentoPN;
|
||||
_rel->lfile().last();
|
||||
_lastreg = _rel->lfile().get_long(MOV_NUMREG); // Init last registration number
|
||||
|
||||
|
||||
set_search_field(F_NUMREG); // Set field for default search
|
||||
|
||||
load_mask(2); // Try to reduce visible loading times
|
||||
load_mask(0);
|
||||
|
||||
return TRUE;
|
||||
@ -192,11 +190,9 @@ bool TPrimanota_application::read_caus(const char* cod, int year)
|
||||
|
||||
bool TPrimanota_application::changing_mask(int mode)
|
||||
{
|
||||
if (mode == MODE_QUERY)
|
||||
if (mode == MODE_QUERY)
|
||||
return _mode != MODE_QUERY;
|
||||
|
||||
TipoIVA oliva = _iva;
|
||||
|
||||
_iva = nessuna_iva;
|
||||
|
||||
TString16 causale;
|
||||
@ -222,7 +218,7 @@ bool TPrimanota_application::changing_mask(int mode)
|
||||
}
|
||||
_iva = _causale.iva();
|
||||
|
||||
return _mode == MODE_QUERY || _iva != oliva;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -231,6 +227,18 @@ TMask* TPrimanota_application::get_mask(int mode)
|
||||
_mode = mode;
|
||||
const int m = (mode == MODE_QUERY) ? 0 : (iva() == nessuna_iva ? 1 : 2);
|
||||
return load_mask(m);
|
||||
}
|
||||
|
||||
|
||||
HIDDEN bool gestione_valuta()
|
||||
{
|
||||
static bool v = 2;
|
||||
if (v == 2)
|
||||
{
|
||||
TConfig c(CONFIG_DITTA, "cg");
|
||||
v = c.get_bool("GesVal");
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
@ -239,13 +247,18 @@ void TPrimanota_application::init_mask(TMask& m)
|
||||
disable_menu_item(M_FILE_PRINT);
|
||||
|
||||
fill_sheet(m);
|
||||
|
||||
|
||||
// Show/Hide campi valuta: F_VALUTA, F_CAMBIO, F_VISVAL (GROUP 3)
|
||||
m.send_key(K_SHIFT+K_CTRL+(_causale.valuta() ? 's' : 'h'), -3);
|
||||
m.set(F_VISVAL, _causale.valuta() ? "X" : " ");
|
||||
const bool valuta = _causale.valuta() && gestione_valuta();
|
||||
m.send_key(K_SHIFT+K_CTRL+(valuta ? 's' : 'h'), -3);
|
||||
if (valuta)
|
||||
{
|
||||
m.set(F_VISVAL, "X");
|
||||
// m.field(F_VISVAL).on_hit();
|
||||
}
|
||||
|
||||
if (_iva != nessuna_iva)
|
||||
{
|
||||
{
|
||||
char clig, forg;
|
||||
if (_iva == iva_acquisti)
|
||||
{
|
||||
@ -307,7 +320,8 @@ void TPrimanota_application::init_insert_mode(TMask& m)
|
||||
m.set(F_DATACOMP, _msk[0]->get(F_DATACOMP));
|
||||
m.set(F_ANNOES, _msk[0]->get(F_ANNOES));
|
||||
m.set(F_ANNOIVA, _msk[0]->get(F_ANNOIVA));
|
||||
occas_mask().reset();
|
||||
if (iva() != nessuna_iva)
|
||||
occas_mask().reset();
|
||||
|
||||
init_mask(m);
|
||||
_saldi.reset(); // Inizializza saldi
|
||||
@ -324,7 +338,7 @@ void TPrimanota_application::init_insert_mode(TMask& m)
|
||||
m.set(F_PROTIVA, protiva+1);
|
||||
|
||||
TMask_field& vv = m.field(F_VISVAL);
|
||||
if (vv.active() && vv.get() == "X") // Se e' un movimento in valuta
|
||||
if (vv.active()) // Se e' un movimento in valuta
|
||||
{
|
||||
const bool ok = m.field(F_VALUTA).on_key(K_F9); // Richiedi valuta
|
||||
vv.set(ok ? "X" : " ");
|
||||
@ -337,7 +351,7 @@ void TPrimanota_application::init_insert_mode(TMask& m)
|
||||
TString80 desc;
|
||||
for (int i = 1; i < _causale.size(); i++)
|
||||
{
|
||||
TRectype* rcaus = (TRectype*)_causale.objptr(i);
|
||||
const TRectype* rcaus = (TRectype*)_causale.objptr(i);
|
||||
if (rcaus == NULL) continue; // Evita eventuali righe nulle
|
||||
|
||||
const int nriga = rcaus->get_int(RCA_NRIGA);
|
||||
|
@ -169,31 +169,31 @@ END
|
||||
SPREADSHEET F_SHEETCG
|
||||
BEGIN
|
||||
PROMPT 0 9 ""
|
||||
ITEM "Dare@17"
|
||||
ITEM "Avere@17"
|
||||
ITEM "Dare@15"
|
||||
ITEM "Avere@15"
|
||||
ITEM " @1"
|
||||
ITEM "Gr."
|
||||
ITEM "Co."
|
||||
ITEM "Sottoc."
|
||||
ITEM "Sottoc.@6"
|
||||
ITEM "Descrizione conto@50"
|
||||
ITEM "Codice"
|
||||
ITEM "Descrizione riga@50"
|
||||
ITEM " @1"
|
||||
ITEM "Gr./c"
|
||||
ITEM "Co./c"
|
||||
ITEM "Sottoc./c"
|
||||
ITEM "Gr./c@3"
|
||||
ITEM "Co./c@3"
|
||||
ITEM "Sottoc./c@6"
|
||||
ITEM "Descrizione contropartita@50"
|
||||
ITEM " @1"
|
||||
END
|
||||
END
|
||||
|
||||
NUMBER F_DARE 17
|
||||
NUMBER F_DARE 15
|
||||
BEGIN
|
||||
PROMPT 1 -1 "Sbilancio Dare "
|
||||
FLAGS "DRV"
|
||||
PICTURE "."
|
||||
END
|
||||
|
||||
NUMBER F_AVERE 17
|
||||
NUMBER F_AVERE 15
|
||||
BEGIN
|
||||
PROMPT 41 -1 "Sbilancio Avere "
|
||||
FLAGS "DRV"
|
||||
|
@ -356,7 +356,7 @@ END
|
||||
BOOLEAN F_OCCASIONALE
|
||||
BEGIN
|
||||
MESSAGE FALSE HIDE,F_OCCASEDIT|ENABLE,F_PIVACLIENTE|ENABLE,F_PIVAFORNITORE|SHOW,F_STATOPAIV
|
||||
MESSAGE TRUE SHOW,F_OCCASEDIT|DISABLE,F_PIVACLIENTE|DISABLE,F_PIVAFORNITORE|HIDE,F_STATOPAIV|PUSH,F_OCCASEDIT
|
||||
MESSAGE TRUE SHOW,F_OCCASEDIT|DISABLE,F_PIVACLIENTE|DISABLE,F_PIVAFORNITORE|HIDE,F_STATOPAIV
|
||||
FLAGS "GH"
|
||||
END
|
||||
|
||||
@ -436,10 +436,10 @@ BEGIN
|
||||
FIELD LF_MOV->CORRLIRE
|
||||
FLAGS "R"
|
||||
PICTURE "."
|
||||
END
|
||||
END
|
||||
|
||||
NUMBER F_CORRVALUTA 15
|
||||
BEGIN
|
||||
NUMBER F_CORRVALUTA 15
|
||||
BEGIN
|
||||
PROMPT 45 15 "Corrisp. valuta "
|
||||
FIELD LF_MOV->CORRVALUTA
|
||||
FLAGS "R"
|
||||
@ -447,7 +447,6 @@ BEGIN
|
||||
END
|
||||
|
||||
|
||||
|
||||
STRING F_VALUTA 3
|
||||
BEGIN
|
||||
PROMPT 1 16 "Valuta "
|
||||
@ -486,7 +485,7 @@ PAGE "IVA" -1 -1 77 20
|
||||
|
||||
GROUPBOX DLG_NULL 78 4
|
||||
BEGIN
|
||||
PROMPT 1 0 "@BMovimento IVA - Sezione IVA"
|
||||
PROMPT 1 0 "@BRighe movimento IVA"
|
||||
END
|
||||
|
||||
NUMBER H_NUMREG 6
|
||||
@ -522,26 +521,26 @@ END
|
||||
SPREADSHEET F_SHEETIVA 0 7
|
||||
BEGIN
|
||||
PROMPT 0 4 ""
|
||||
ITEM "Imponibile@14"
|
||||
ITEM "Imponibile@15"
|
||||
ITEM "Iva@4"
|
||||
ITEM "Det@1"
|
||||
ITEM "Imposta@14"
|
||||
ITEM "Imposta@15"
|
||||
ITEM "C/R@1"
|
||||
ITEM " @1"
|
||||
ITEM " "
|
||||
ITEM "Gr."
|
||||
ITEM "Co."
|
||||
ITEM "Sottoc."
|
||||
ITEM "Sottoc.@6"
|
||||
ITEM "Descrizione Conto@50"
|
||||
END
|
||||
|
||||
NUMBER F_IMPONIBILI 17
|
||||
NUMBER F_IMPONIBILI 15
|
||||
BEGIN
|
||||
PROMPT 1 11 "Totale imponibili "
|
||||
FLAGS "DRV"
|
||||
PICTURE "."
|
||||
END
|
||||
|
||||
NUMBER F_IMPOSTE 17
|
||||
NUMBER F_IMPOSTE 15
|
||||
BEGIN
|
||||
PROMPT 41 11 "Totale imposte "
|
||||
FLAGS "DRV"
|
||||
@ -551,31 +550,31 @@ END
|
||||
SPREADSHEET F_SHEETCG
|
||||
BEGIN
|
||||
PROMPT 0 12 ""
|
||||
ITEM "Dare@17"
|
||||
ITEM "Avere@17"
|
||||
ITEM " @1"
|
||||
ITEM "Dare@15"
|
||||
ITEM "Avere@15"
|
||||
ITEM " "
|
||||
ITEM "Gr."
|
||||
ITEM "Co."
|
||||
ITEM "Sottoc."
|
||||
ITEM "Sottoc.@6"
|
||||
ITEM "Descrizione conto@50"
|
||||
ITEM "Codice"
|
||||
ITEM "Descrizione riga@50"
|
||||
ITEM " @1"
|
||||
ITEM "Gr./c"
|
||||
ITEM "Co./c"
|
||||
ITEM "Sottoc./c"
|
||||
ITEM " "
|
||||
ITEM "Gr./c@3"
|
||||
ITEM "Co./c@3"
|
||||
ITEM "Sottoc./c@6"
|
||||
ITEM "Descrizione contropartita@50"
|
||||
ITEM " @1"
|
||||
ITEM " "
|
||||
END
|
||||
|
||||
NUMBER F_DARE 17
|
||||
NUMBER F_DARE 15
|
||||
BEGIN
|
||||
PROMPT 1 -1 "Sbilancio Dare "
|
||||
FLAGS "DRV"
|
||||
PICTURE "."
|
||||
END
|
||||
|
||||
NUMBER F_AVERE 17
|
||||
NUMBER F_AVERE 15
|
||||
BEGIN
|
||||
PROMPT 41 -1 "Sbilancio Avere "
|
||||
FLAGS "DRV"
|
||||
|
316
cg/cg2100o.uml
316
cg/cg2100o.uml
@ -1,157 +1,159 @@
|
||||
#include "cg2100.h"
|
||||
|
||||
PAGE "Dati cliente/fornitore occasionale" -1 -1 72 14
|
||||
|
||||
STRING O_CODICE 16
|
||||
BEGIN
|
||||
PROMPT 2 1 "Codice fiscale / Partita IVA / Codice progressivo "
|
||||
USE LF_OCCAS
|
||||
INPUT CFPI O_CODICE
|
||||
DISPLAY "Codice@16" CFPI
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
OUTPUT O_CODICE CFPI
|
||||
OUTPUT O_RAGSOC RAGSOC
|
||||
WARNING "Codice obbligatorio"
|
||||
HELP "Codice fiscale o Partita IVA o altro codice che identifichi univocamente la persona"
|
||||
FIELD CFPI
|
||||
END
|
||||
|
||||
STRING O_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 2 2 "Ragione sociale "
|
||||
FIELD RAGSOC
|
||||
USE LF_OCCAS KEY 2
|
||||
INPUT RAGSOC O_RAGSOC
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Codice@16" CFPI
|
||||
OUTPUT O_CODICE CFPI
|
||||
OUTPUT O_RAGSOC RAGSOC
|
||||
HELP "Ragione sociale o Nome della persona"
|
||||
WARNING "Ragione sociale obbligatoria"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 70 5
|
||||
BEGIN
|
||||
PROMPT 1 3 "Dati residenza"
|
||||
END
|
||||
|
||||
STRING O_INDIRIZZO 40
|
||||
BEGIN
|
||||
PROMPT 2 4 "Indirizzo "
|
||||
FIELD INDIR
|
||||
END
|
||||
|
||||
STRING O_NUMERO 6
|
||||
BEGIN
|
||||
PROMPT 55 4 "Numero "
|
||||
FIELD CIV
|
||||
END
|
||||
|
||||
STRING O_STATO 3
|
||||
BEGIN
|
||||
PROMPT 2 5 "Stato "
|
||||
FIELD STATO
|
||||
FLAGS "U"
|
||||
USE %STA
|
||||
INPUT CODTAB O_STATO
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Denominazione" S0
|
||||
OUTPUT O_STATO CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING O_COMUNE 4
|
||||
BEGIN
|
||||
PROMPT 27 5 "Comune "
|
||||
FIELD COM
|
||||
FLAGS "U"
|
||||
USE LF_COMUNI
|
||||
INPUT STATO O_STATO
|
||||
INPUT COM O_COMUNE
|
||||
DISPLAY "Codice" COM
|
||||
DISPLAY "Denominazione@50" DENCOM
|
||||
OUTPUT O_COMUNE COM
|
||||
OUTPUT O_DENCOM DENCOM
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER O_CAP 5
|
||||
BEGIN
|
||||
PROMPT 56 5 "C.A.P. "
|
||||
FIELD CAP
|
||||
END
|
||||
|
||||
STRING O_DENCOM 50
|
||||
BEGIN
|
||||
PROMPT 2 6 "Denominazione "
|
||||
USE LF_COMUNI KEY 2
|
||||
INPUT DENCOM O_DENCOM
|
||||
DISPLAY "Denominazione@50" DENCOM
|
||||
DISPLAY "Codice" COM
|
||||
COPY OUTPUT O_COMUNE
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 70 4
|
||||
BEGIN
|
||||
PROMPT 1 8 "Dati nascita"
|
||||
END
|
||||
|
||||
LIST O_SESSO 1 12
|
||||
BEGIN
|
||||
PROMPT 2 9 "Sesso "
|
||||
ITEM "M|Maschio"
|
||||
ITEM "F|Femmina"
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
DATE O_DATANAS
|
||||
BEGIN
|
||||
PROMPT 23 9 "Data "
|
||||
FIELD DNASC
|
||||
END
|
||||
|
||||
STRING O_STATONAS 3
|
||||
BEGIN
|
||||
PROMPT 41 9 "Stato "
|
||||
FIELD STATONASC
|
||||
FLAGS "U"
|
||||
COPY USE O_STATO
|
||||
INPUT CODTAB O_STATONAS
|
||||
COPY DISPLAY O_STATO
|
||||
OUTPUT O_STATONAS CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING O_COMUNENAS 4
|
||||
BEGIN
|
||||
PROMPT 55 9 "Comune "
|
||||
FIELD COMNASC
|
||||
FLAGS "U"
|
||||
COPY USE O_COMUNE
|
||||
INPUT STATO O_STATONAS
|
||||
INPUT COM O_COMUNENAS
|
||||
COPY DISPLAY O_COMUNE
|
||||
OUTPUT O_COMUNENAS COM
|
||||
OUTPUT O_DENCOMNAS DENCOM
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING O_DENCOMNAS 50
|
||||
BEGIN
|
||||
PROMPT 2 10 "Denominazione "
|
||||
COPY USE O_DENCOM
|
||||
INPUT DENCOM O_DENCOMNAS
|
||||
COPY DISPLAY O_DENCOM
|
||||
COPY OUTPUT O_COMUNENAS
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
PROMPT -11 -1 "Conferma"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
#include "cg2100.h"
|
||||
|
||||
PAGE "Dati cliente/fornitore occasionale" -1 -1 72 14
|
||||
|
||||
STRING O_CODICE 16
|
||||
BEGIN
|
||||
PROMPT 2 1 "Codice fiscale / Partita IVA / Codice progressivo "
|
||||
USE LF_OCCAS
|
||||
INPUT CFPI O_CODICE
|
||||
DISPLAY "Codice@16" CFPI
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
OUTPUT O_CODICE CFPI
|
||||
OUTPUT O_RAGSOC RAGSOC
|
||||
WARNING "Codice obbligatorio"
|
||||
HELP "Codice fiscale o Partita IVA o altro codice che identifichi univocamente la persona"
|
||||
FIELD CFPI
|
||||
VALIDATE NOT_EMPTY_FUNC
|
||||
END
|
||||
|
||||
STRING O_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 2 2 "Ragione sociale "
|
||||
FIELD RAGSOC
|
||||
USE LF_OCCAS KEY 2
|
||||
INPUT RAGSOC O_RAGSOC
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Codice@16" CFPI
|
||||
OUTPUT O_CODICE CFPI
|
||||
OUTPUT O_RAGSOC RAGSOC
|
||||
HELP "Ragione sociale o Nome della persona"
|
||||
WARNING "Ragione sociale obbligatoria"
|
||||
VALIDATE NOT_EMPTY_FUNC
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 70 5
|
||||
BEGIN
|
||||
PROMPT 1 3 "Dati residenza"
|
||||
END
|
||||
|
||||
STRING O_INDIRIZZO 40
|
||||
BEGIN
|
||||
PROMPT 2 4 "Indirizzo "
|
||||
FIELD INDIR
|
||||
END
|
||||
|
||||
STRING O_NUMERO 6
|
||||
BEGIN
|
||||
PROMPT 55 4 "Numero "
|
||||
FIELD CIV
|
||||
END
|
||||
|
||||
STRING O_STATO 3
|
||||
BEGIN
|
||||
PROMPT 2 5 "Stato "
|
||||
FIELD STATO
|
||||
FLAGS "U"
|
||||
USE %STA
|
||||
INPUT CODTAB O_STATO
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Denominazione" S0
|
||||
OUTPUT O_STATO CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING O_COMUNE 4
|
||||
BEGIN
|
||||
PROMPT 27 5 "Comune "
|
||||
FIELD COM
|
||||
FLAGS "U"
|
||||
USE LF_COMUNI
|
||||
INPUT STATO O_STATO
|
||||
INPUT COM O_COMUNE
|
||||
DISPLAY "Codice" COM
|
||||
DISPLAY "Denominazione@50" DENCOM
|
||||
OUTPUT O_COMUNE COM
|
||||
OUTPUT O_DENCOM DENCOM
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER O_CAP 5
|
||||
BEGIN
|
||||
PROMPT 56 5 "C.A.P. "
|
||||
FIELD CAP
|
||||
END
|
||||
|
||||
STRING O_DENCOM 50
|
||||
BEGIN
|
||||
PROMPT 2 6 "Denominazione "
|
||||
USE LF_COMUNI KEY 2
|
||||
INPUT DENCOM O_DENCOM
|
||||
DISPLAY "Denominazione@50" DENCOM
|
||||
DISPLAY "Codice" COM
|
||||
COPY OUTPUT O_COMUNE
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 70 4
|
||||
BEGIN
|
||||
PROMPT 1 8 "Dati nascita"
|
||||
END
|
||||
|
||||
LIST O_SESSO 1 12
|
||||
BEGIN
|
||||
PROMPT 2 9 "Sesso "
|
||||
ITEM "M|Maschio"
|
||||
ITEM "F|Femmina"
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
DATE O_DATANAS
|
||||
BEGIN
|
||||
PROMPT 23 9 "Data "
|
||||
FIELD DNASC
|
||||
END
|
||||
|
||||
STRING O_STATONAS 3
|
||||
BEGIN
|
||||
PROMPT 41 9 "Stato "
|
||||
FIELD STATONASC
|
||||
FLAGS "U"
|
||||
COPY USE O_STATO
|
||||
INPUT CODTAB O_STATONAS
|
||||
COPY DISPLAY O_STATO
|
||||
OUTPUT O_STATONAS CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING O_COMUNENAS 4
|
||||
BEGIN
|
||||
PROMPT 55 9 "Comune "
|
||||
FIELD COMNASC
|
||||
FLAGS "U"
|
||||
COPY USE O_COMUNE
|
||||
INPUT STATO O_STATONAS
|
||||
INPUT COM O_COMUNENAS
|
||||
COPY DISPLAY O_COMUNE
|
||||
OUTPUT O_COMUNENAS COM
|
||||
OUTPUT O_DENCOMNAS DENCOM
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING O_DENCOMNAS 50
|
||||
BEGIN
|
||||
PROMPT 2 10 "Denominazione "
|
||||
COPY USE O_DENCOM
|
||||
INPUT DENCOM O_DENCOMNAS
|
||||
COPY DISPLAY O_DENCOM
|
||||
COPY OUTPUT O_COMUNENAS
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
PROMPT -11 -1 "Conferma"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
149
cg/cg2102.cpp
149
cg/cg2102.cpp
@ -6,6 +6,8 @@
|
||||
#include "cg2100.h"
|
||||
#include "cg2102.h"
|
||||
|
||||
#include <mov.h>
|
||||
#include <clifo.h>
|
||||
|
||||
// Certified 100%
|
||||
inline TPrimanota_application& app()
|
||||
@ -223,8 +225,10 @@ int TPrimanota_application::det_used(char det) const
|
||||
|
||||
TMask& TPrimanota_application::mask() const
|
||||
{
|
||||
TipoIVA i = app().iva();
|
||||
return *_msk[i == nessuna_iva ? 1 : 2];
|
||||
const TipoIVA i = app().iva();
|
||||
const int m = i == nessuna_iva ? 1 : 2;
|
||||
CHECKD(_msk[m], "Maschera non attiva! ", m);
|
||||
return *_msk[m];
|
||||
}
|
||||
|
||||
|
||||
@ -289,32 +293,34 @@ TImporto TPrimanota_application::real2imp(const real& r, char row_type)
|
||||
// Disabilita le celle della riga contabile n in base al suo tipo
|
||||
void TPrimanota_application::disable_cgs_cells(int n, char tipo)
|
||||
{
|
||||
int last;
|
||||
int last = 0;
|
||||
switch(tipo)
|
||||
{
|
||||
case 'F': // Ritenute Fiscali
|
||||
case 'S': // Ritenute Sociali
|
||||
case 'D': // IVA Detraibile
|
||||
case 'F': // Ritenute Fiscali
|
||||
case 'N':
|
||||
case 'S': // Ritenute Sociali
|
||||
case 'T': // Totale documento
|
||||
last = 3; // IVA Non detraibile
|
||||
break;
|
||||
case 'T': // Totale documento
|
||||
case 'I':
|
||||
last = 7; // Imponibile
|
||||
break;
|
||||
default :
|
||||
default:
|
||||
last = 0; // Solo contabile
|
||||
break;
|
||||
}
|
||||
|
||||
TSheet_field& cg = cgs();
|
||||
for (int i = 0; i < last; i++)
|
||||
cg.disable_cell(n, i);
|
||||
|
||||
if (tipo == 'T')
|
||||
|
||||
if (last > 0)
|
||||
{
|
||||
cg.enable_cell(n, 3);
|
||||
cg.enable_cell(n, 4);
|
||||
TSheet_field& cg = cgs();
|
||||
for (int i = 0; i < last; i++)
|
||||
cg.disable_cell(n, i);
|
||||
if (tipo == 'T' && !causale().corrispettivi())
|
||||
{
|
||||
cg.disable_cell(n, 5);
|
||||
cg.disable_cell(n, 6);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -530,20 +536,21 @@ void TPrimanota_application::set_ivas_row(int nriga, const char* codiva, TBill&
|
||||
bool TPrimanota_application::imponibile_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_TAB && f.dirty())
|
||||
{
|
||||
TString16 iva(f.mask().get(102));
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
TString16 iva(m.get(102));
|
||||
if (iva.empty())
|
||||
{
|
||||
iva = app().mask().get(F_CODIVA);
|
||||
f.mask().set(102, iva);
|
||||
m.set(102, iva);
|
||||
}
|
||||
if (iva.not_empty()) // Se c'e' il codice IVA
|
||||
if (iva.not_empty() && !app().causale().corrispettivi())
|
||||
{
|
||||
const real& percent = cod2IVA(f.mask());
|
||||
const real& percent = cod2IVA(m);
|
||||
const real imponibile(f.get());
|
||||
real imposta = abs(imponibile) * percent / 100.0; imposta.ceil();
|
||||
if (imponibile.sign() < 0) imposta = -imposta;
|
||||
f.mask().set(104, imposta.string());
|
||||
m.set(104, imposta.string());
|
||||
}
|
||||
}
|
||||
|
||||
@ -576,7 +583,7 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key)
|
||||
const real& percent = cod2IVA(f.mask());
|
||||
real imposta = abs(imponibile) * percent / 100.0;
|
||||
imposta.ceil();
|
||||
if (imponibile < ZERO) imposta = -imposta;
|
||||
if (imponibile.sign() < 0) imposta = -imposta;
|
||||
|
||||
const real val(f.get());
|
||||
if (val != imposta)
|
||||
@ -632,19 +639,25 @@ bool TPrimanota_application::iva_notify(int r, KEY k)
|
||||
TToken_string& row = iva.row(r);
|
||||
|
||||
if (k == K_SPACE)
|
||||
{
|
||||
{
|
||||
oldimp = real(row.get(0)); // Imponibile 0
|
||||
oldiva = real(row.get(3)); // Imposta 3
|
||||
if (app().causale().corrispettivi())
|
||||
{
|
||||
const TCodiceIVA i(row.get(1));
|
||||
const real percent = i.percentuale();
|
||||
oldiva = scorpora(oldimp, percent);
|
||||
}
|
||||
|
||||
const char tipod = detraibile(row.get_int()) ? 'D' : 'N';
|
||||
oldposiva = type2pos(tipod); // Tipodet 4
|
||||
const char tipod = detraibile(row.get_int(2)) ? 'D' : 'N'; // Tipodet 2
|
||||
oldposiva = type2pos(tipod);
|
||||
if (oldposiva < 0 && oldiva != ZERO)
|
||||
{
|
||||
TBill c; app().causale().bill(tipod == 'D' ? 3 : 4, c);
|
||||
oldposiva = app().set_cgs_row(-1, app().real2imp(ZERO, 'I'), c, "", tipod);
|
||||
}
|
||||
|
||||
TBill oldconto(row, 5, 0x1); // t/g/c/s 5 6 7 8
|
||||
TBill oldconto(row, 6, 0x0); // g/c/s 6 7 8
|
||||
oldpos = bill2pos(oldconto, 'I');
|
||||
if (oldpos < 0 && oldconto.ok())
|
||||
oldpos = app().set_cgs_row(-1, app().real2imp(ZERO, 'I'), oldconto, "", 'I');
|
||||
@ -667,7 +680,9 @@ bool TPrimanota_application::iva_notify(int r, KEY k)
|
||||
}
|
||||
|
||||
// Aggiorna conto sulla riga contabile
|
||||
real imp(row.get(0)); // Imponibile
|
||||
const real imp(row.get(0)); // Imponibile
|
||||
const real imposta(row.get(3)); // Imposta
|
||||
|
||||
TBill conto(row, 5, 0x3);
|
||||
const int newpos = bill2pos(conto, 'I');
|
||||
|
||||
@ -687,24 +702,23 @@ bool TPrimanota_application::iva_notify(int r, KEY k)
|
||||
|
||||
// Aggiorna conto IVA sulla riga contabile
|
||||
|
||||
imp = real(row.get(3)); // Imposta
|
||||
const bool detrarre = detraibile(row.get_int()); // Determina se IVA detraibile
|
||||
const bool detrarre = detraibile(row.get_int(2)); // Determina se IVA detraibile
|
||||
app().causale().bill(detrarre ? 3 : 4, conto);
|
||||
const char tipod = detrarre ? 'D' : 'N';
|
||||
const int newposiva = type2pos(tipod);
|
||||
|
||||
if (newposiva < 0)
|
||||
{
|
||||
const TImporto val(app().real2imp(imp, 'I'));
|
||||
const TImporto val(app().real2imp(imposta, 'I'));
|
||||
if (val.valore() != ZERO)
|
||||
app().set_cgs_row(-1, val, conto, "", tipod);
|
||||
}
|
||||
else
|
||||
{
|
||||
const TImporto val(app().real2imp(imp, 'I'));
|
||||
const TImporto val(app().real2imp(imposta, 'I'));
|
||||
app().add_cgs_imp(newposiva, val);
|
||||
}
|
||||
oldiva = imp;
|
||||
oldiva = imposta;
|
||||
oldposiva = newposiva;
|
||||
|
||||
app().calcola_imp();
|
||||
@ -737,6 +751,31 @@ bool TPrimanota_application::iva_handler(TMask_field& f, KEY k)
|
||||
}
|
||||
|
||||
|
||||
bool TPrimanota_application::cg_clifo_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (!suspended_handler(f, k))
|
||||
return FALSE;
|
||||
|
||||
if (k == K_TAB)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
const short cid = 100 + (f.dlg() % 100) -1;
|
||||
const int conto = m.get_int(cid);
|
||||
if (conto == 0)
|
||||
{
|
||||
const long codice = atol(f.get());
|
||||
if (codice > 0L)
|
||||
{
|
||||
TBill c(0, 0, codice, app().clifo());
|
||||
c.descrizione(); // Carica gruppo e conto
|
||||
m.set(cid-1, c.gruppo());
|
||||
m.set(cid, c.conto());
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Handlers dei campi della testata
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -848,8 +887,18 @@ bool TPrimanota_application::datareg_handler(TMask_field& f, KEY key)
|
||||
gio.last_reg().string(), ae);
|
||||
|
||||
if (m.query_mode())
|
||||
{
|
||||
const long numreg = m.get_long(F_NUMREG);
|
||||
if (numreg > 0)
|
||||
{
|
||||
TLocalisamfile& mov = app().get_relation()->lfile();
|
||||
mov.put(MOV_NUMREG, numreg);
|
||||
if (mov.read() == NOERR)
|
||||
m.set(F_CODCAUS, mov.get(MOV_CODCAUS));
|
||||
}
|
||||
app().read_caus(m.get(F_CODCAUS), dr.year());
|
||||
|
||||
}
|
||||
|
||||
TRegistro& reg = app().causale().reg();
|
||||
const TString16 codreg(reg.name());
|
||||
if (codreg.not_empty())
|
||||
@ -879,7 +928,7 @@ bool TPrimanota_application::datareg_handler(TMask_field& f, KEY key)
|
||||
// Certified 90%
|
||||
bool TPrimanota_application::datacomp_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if ((key == K_TAB && f.focusdirty()) || key == K_ENTER)
|
||||
if (key == K_TAB || key == K_ENTER)
|
||||
{
|
||||
const TDate dc(f.get()); // Data di competenza
|
||||
const int ae = date2esc(dc); // Esercizio corrispondente
|
||||
@ -956,7 +1005,7 @@ bool TPrimanota_application::occas_code_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
TRelation occas(LF_OCCAS);
|
||||
occas.lfile().put("CFPI", code);
|
||||
if (occas.read() == NOERR)
|
||||
if (occas.read(_isequal) == NOERR)
|
||||
{
|
||||
f.mask().autoload(&occas);
|
||||
f.mask().send_key(K_TAB, O_COMUNE); // Forza decodifica comuni
|
||||
@ -991,7 +1040,7 @@ bool TPrimanota_application::occas_handler(TMask_field& f, KEY key)
|
||||
void TPrimanota_application::add_cgs_tot(TMask& m)
|
||||
{
|
||||
// Lettura del conto dalla maschera
|
||||
char tipo = m.get(F_CLIFO)[0];
|
||||
char tipo = app().iva() == iva_acquisti ? 'F' : 'C';
|
||||
int gruppo = m.get_int(F_GRUPPOCLIFO);
|
||||
int conto = m.get_int(F_CONTOCLIFO);
|
||||
long codice = m.get_long(tipo == 'C' ? F_CLIENTE : F_FORNITORE);
|
||||
@ -1002,10 +1051,12 @@ void TPrimanota_application::add_cgs_tot(TMask& m)
|
||||
TBill bill; _causale.bill(1, bill);
|
||||
gruppo = bill.gruppo(); m.set(F_GRUPPOCLIFO, gruppo);
|
||||
conto = bill.conto(); m.set(F_CONTOCLIFO, conto);
|
||||
codice = bill.sottoconto();
|
||||
}
|
||||
|
||||
if (tipo == 'C' && causale().corrispettivi())
|
||||
tipo = ' ';
|
||||
|
||||
TBill c(gruppo, conto, codice, tipo);
|
||||
real tot(m.get(F_TOTALE));
|
||||
|
||||
@ -1025,11 +1076,14 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
|
||||
|
||||
if (key == K_TAB && f.focusdirty())
|
||||
{
|
||||
app().add_cgs_tot(f.mask());
|
||||
TMask& m = f.mask();
|
||||
app().add_cgs_tot(m);
|
||||
TLocalisamfile clifo(LF_CLIFO);
|
||||
const int alleg = clifo.get_int("ALLEG");
|
||||
TEdit_field& upi = f.mask().efield(F_RIEPILOGO);
|
||||
const int alleg = clifo.get_int(CLI_ALLEG);
|
||||
TEdit_field& upi = m.efield(F_RIEPILOGO);
|
||||
upi.check_type(alleg == 3 ? CHECK_REQUIRED : CHECK_NORMAL);
|
||||
if (clifo.get_bool(CLI_OCCAS))
|
||||
m.send_key(K_SPACE, F_OCCASEDIT); // Lancia maschera occasionali
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@ -1047,18 +1101,18 @@ bool TPrimanota_application::main_codiva_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
iva_notify(0, K_SPACE);
|
||||
|
||||
const bool corr = app().causale().corrispettivi();
|
||||
const TCodiceIVA iva(f.get());
|
||||
real tot = app().totale_documento();
|
||||
|
||||
real imposta;
|
||||
if (!app().causale().corrispettivi())
|
||||
if (!corr)
|
||||
imposta = app().scorpora(tot, iva.percentuale());
|
||||
|
||||
row.add(tot.string(), 0); // imponibile
|
||||
row.add(iva.codice(), 1); // codice IVA
|
||||
row.add(imposta.string(), 3); // imposta
|
||||
|
||||
TBill bill; // Conto della prima riga IVA
|
||||
TBill bill; // Conto della prima riga IVA
|
||||
const TString& tipo = iva.tipo();
|
||||
if (tipo.not_empty())
|
||||
{
|
||||
@ -1066,13 +1120,14 @@ bool TPrimanota_application::main_codiva_handler(TMask_field& f, KEY key)
|
||||
if (tipo == "NI") app().causale().bill(6, bill); else
|
||||
if (tipo == "NS") app().causale().bill(7, bill);
|
||||
}
|
||||
if (!bill.ok() && !app().causale().corrispettivi())
|
||||
if (!bill.ok() && !corr)
|
||||
{
|
||||
const TMask& m = f.mask();
|
||||
bill.set(m.get_int(F_GRUPPORIC), m.get_int(F_CONTORIC), m.get_long(F_SOTTOCONTORIC));
|
||||
}
|
||||
if (!bill.ok())
|
||||
app().causale().bill(2, bill);
|
||||
row.add(bill.tipo_cr(), 4);
|
||||
row.add(bill.tipo(), 5);
|
||||
row.add(bill.gruppo(), 6);
|
||||
row.add(bill.conto(), 7);
|
||||
@ -1149,7 +1204,13 @@ bool TPrimanota_application::visval_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
const real e(f.get() == "X" ? m.get(F_CAMBIO) : "1");
|
||||
m.set_exchange(e);
|
||||
if (e > ZERO)
|
||||
m.set_exchange(e);
|
||||
else
|
||||
{
|
||||
error_box("Impostare un valore valido per il cambio");
|
||||
f.reset();
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ class TPrimanota_application : public TRelation_application
|
||||
TLocalisamfile* _comuni;
|
||||
TLocalisamfile* _occas;
|
||||
TLocalisamfile* _nditte;
|
||||
|
||||
|
||||
TCausale _causale; // Causale corrente
|
||||
TLibro_giornale _giornale; // Libro giornale corrente
|
||||
TipoIVA _iva; // Tipo di IVA corrente
|
||||
@ -69,6 +69,7 @@ class TPrimanota_application : public TRelation_application
|
||||
static bool codiva_handler(TMask_field& f, KEY key);
|
||||
static bool imposta_handler(TMask_field& f, KEY key);
|
||||
static bool dareavere_handler(TMask_field& f, KEY k);
|
||||
static bool cg_clifo_handler(TMask_field& f, KEY k);
|
||||
|
||||
static bool iva_notify(int r, KEY key);
|
||||
static bool iva_handler(TMask_field& f, KEY key);
|
||||
@ -102,6 +103,7 @@ protected:
|
||||
void mask2rel(const TMask& m);
|
||||
|
||||
TipoIVA iva() const { return _iva; }
|
||||
char clifo() const { return iva() == iva_vendite ? 'C' : 'F'; }
|
||||
TMask& TPrimanota_application::mask() const;
|
||||
|
||||
void fill_sheet(TMask& m) const;
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include "cg2103.h"
|
||||
|
||||
#include <causali.h>
|
||||
#include <rcausali.h>
|
||||
|
||||
const char* iva2name(TipoIVA iva)
|
||||
{
|
||||
@ -246,6 +247,7 @@ bool TCausale::read(const char* cod, int year)
|
||||
destroy(); // Delete all rows
|
||||
_iva = iva_errata; // Delete misc info
|
||||
_sezione_clifo = _sezione_ritsoc = ' ';
|
||||
_corrisp = FALSE;
|
||||
|
||||
if (*cod > ' ')
|
||||
{
|
||||
@ -350,10 +352,12 @@ bool TCausale::ok() const
|
||||
char TCausale::sezione(int riga) const
|
||||
{
|
||||
const TRectype& r = row(riga);
|
||||
char sez = toupper(r.get_char("SEZIONE"));
|
||||
char sez = toupper(r.get_char(RCA_SEZIONE));
|
||||
if (sez <= ' ') // Guess section on tipocf
|
||||
{
|
||||
const char tipocf = toupper(row(1).get_char("TIPOCF"));
|
||||
char tipocf = toupper(row(1).get_char(RCA_TIPOCF));
|
||||
if (tipocf <= ' ')
|
||||
tipocf = (iva() == iva_vendite) ? 'C' : 'F'; // Guess tipocf on IVA
|
||||
sez = (tipocf == 'C') ? 'D' : 'A';
|
||||
}
|
||||
return sez;
|
||||
|
@ -28,17 +28,17 @@ BEGIN
|
||||
PROMPT 1 4 "Conto principale"
|
||||
END
|
||||
|
||||
NUMBER 101 14
|
||||
NUMBER 101 15
|
||||
BEGIN
|
||||
PROMPT 2 5 "Dare "
|
||||
FLAGS "RUV"
|
||||
FLAGS "RV"
|
||||
PICTURE "."
|
||||
END
|
||||
|
||||
NUMBER 102 14
|
||||
NUMBER 102 15
|
||||
BEGIN
|
||||
PROMPT 44 5 "Avere "
|
||||
FLAGS "RUV"
|
||||
FLAGS "RV"
|
||||
PICTURE "."
|
||||
END
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
PAGE "RIGA IVA" -1 -1 70 15
|
||||
PAGE "RIGA IVA" -1 -1 70 13
|
||||
|
||||
GROUPBOX DLG_NULL 67 4
|
||||
GROUPBOX DLG_NULL 67 5
|
||||
BEGIN
|
||||
PROMPT 1 1 "Conto"
|
||||
END
|
||||
@ -84,10 +84,10 @@ BEGIN
|
||||
DISPLAY "Conto" CONTO
|
||||
OUTPUT 209 CODCF
|
||||
OUTPUT 210 RAGSOC
|
||||
OUTPUT 105 ""
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN cg0 -1
|
||||
FLAGS "G"
|
||||
MESSAGE COPY,109|RESET,105
|
||||
MESSAGE COPY,109
|
||||
VALIDATE REQIF_FUNC 1 101
|
||||
WARNING "Cliente inesistente nella riga IVA"
|
||||
END
|
||||
@ -104,9 +104,9 @@ BEGIN
|
||||
OUTPUT 108 CONTO
|
||||
OUTPUT 309 CODCF
|
||||
OUTPUT 310 RAGSOC
|
||||
OUTPUT 105 ""
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN cg0 -1
|
||||
FLAGS "G"
|
||||
MESSAGE COPY,109|RESET,105
|
||||
VALIDATE REQIF_FUNC 1 101
|
||||
WARNING "Fornitore inesistente nella riga IVA"
|
||||
@ -114,7 +114,7 @@ END
|
||||
|
||||
STRING 110 50
|
||||
BEGIN
|
||||
PROMPT 2 3 "Descriz. "
|
||||
PROMPT 2 3 "Descriz. "
|
||||
FIELD LF_PCON->DESCR
|
||||
USE LF_PCON KEY 2
|
||||
INPUT DESCR 107
|
||||
@ -124,13 +124,12 @@ BEGIN
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
COPY OUTPUT 109
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Sottoconto inesistente o mancante sulla riga IVA"
|
||||
ADD RUN cg0 -0
|
||||
END
|
||||
|
||||
STRING 210 50
|
||||
BEGIN
|
||||
PROMPT 2 3 "Cliente "
|
||||
PROMPT 2 3 "Cliente "
|
||||
FIELD LF_CLIFO->RAGSOC
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "C"
|
||||
@ -143,12 +142,11 @@ BEGIN
|
||||
MESSAGE COPY,110
|
||||
ADD RUN cg0 -1
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Cliente inesistente sulla riga IVA"
|
||||
END
|
||||
|
||||
STRING 310 50
|
||||
BEGIN
|
||||
PROMPT 2 3 "Fornitore "
|
||||
PROMPT 2 3 "Fornitore "
|
||||
FIELD LF_PCON->SOTTOCONTO
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "F"
|
||||
@ -161,19 +159,30 @@ BEGIN
|
||||
MESSAGE COPY,110
|
||||
ADD RUN cg0 -1
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Fornitore inesistente sulla riga IVA"
|
||||
END
|
||||
|
||||
|
||||
LIST 105 1 53
|
||||
BEGIN
|
||||
PROMPT 2 4 "Tipo C/R "
|
||||
ITEM " |0 - Acquisti o vendite in genere"
|
||||
ITEM "1|1 - Acquisti beni per rivendita"
|
||||
ITEM "2|2 - Acquisti beni ammortizzabili"
|
||||
ITEM "3|3 - Acquisti beni ammortizzabili con detr. 6%"
|
||||
ITEM "4|4 - Vendita beni strumentali art. 17"
|
||||
ITEM "5|5 - Beni per rivendita da non ventilare"
|
||||
ITEM "8|8 - Altri beni strumentali acquistati in leasing"
|
||||
FLAGS "D"
|
||||
HELP "Specifica il tipo Costo/Ricavo del conto"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 67 5
|
||||
BEGIN
|
||||
PROMPT 1 5 "Imposta"
|
||||
PROMPT 1 6 "Imposta"
|
||||
END
|
||||
|
||||
STRING 102 4
|
||||
BEGIN
|
||||
PROMPT 2 6 "IVA "
|
||||
PROMPT 2 7 "IVA "
|
||||
FLAGS "U"
|
||||
USE %IVA
|
||||
INPUT CODTAB 102
|
||||
@ -189,13 +198,13 @@ END
|
||||
|
||||
STRING 211 50
|
||||
BEGIN
|
||||
PROMPT 15 6 ""
|
||||
PROMPT 15 7 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER 103 1
|
||||
BEGIN
|
||||
PROMPT 2 7 "Detraz. "
|
||||
PROMPT 2 9 "Detraz. "
|
||||
SHEET "Codice|Descrizione@60"
|
||||
INPUT 103
|
||||
ITEM " |Regime normale"
|
||||
@ -208,56 +217,25 @@ END
|
||||
|
||||
STRING 213 50
|
||||
BEGIN
|
||||
PROMPT 15 7 ""
|
||||
PROMPT 15 9 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
|
||||
NUMBER 101 14
|
||||
NUMBER 101 15
|
||||
BEGIN
|
||||
PROMPT 2 8 "Imponibile "
|
||||
FLAGS "RV"
|
||||
PICTURE "."
|
||||
END
|
||||
|
||||
NUMBER 104 14
|
||||
NUMBER 104 15
|
||||
BEGIN
|
||||
PROMPT 41 8 "Imposta "
|
||||
PROMPT 40 8 "Imposta "
|
||||
FLAGS "RV"
|
||||
PICTURE "."
|
||||
END
|
||||
|
||||
|
||||
GROUPBOX DLG_NULL 67 3
|
||||
BEGIN
|
||||
PROMPT 1 10 "Costo/Ricavo"
|
||||
END
|
||||
|
||||
STRING 105 1
|
||||
BEGIN
|
||||
PROMPT 2 11 "Tipo "
|
||||
FLAGS "D"
|
||||
HELP "Specifica il tipo Costo/Ricavo"
|
||||
SHEET "Codice|Descrizione@50"
|
||||
INPUT 105
|
||||
ITEM " |Acquisti o vendite in genere"
|
||||
ITEM "1|Acquisti beni per rivendita"
|
||||
ITEM "2|Acquisti beni ammortizzabili"
|
||||
ITEM "3|Acquisti beni ammortizzabili con detr. 6%"
|
||||
ITEM "4|Vendita beni strumentali art. 17"
|
||||
ITEM "5|Beni per rivendita da non ventilare"
|
||||
ITEM "8|Altri beni strumentali acquistati in leasing"
|
||||
OUTPUT 105
|
||||
OUTPUT 212
|
||||
END
|
||||
|
||||
STRING 212 50
|
||||
BEGIN
|
||||
PROMPT 15 11 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
PROMPT -13 -1 ""
|
||||
|
@ -29,7 +29,7 @@ BEGIN
|
||||
ITEM "1|Libri bollati della ditta"
|
||||
ITEM "2|Libri unici dello studio"
|
||||
ITEM "3|Stampa di prova"
|
||||
ITEM "4|Stampa libri con riferimenti al libro giornale"
|
||||
ITEM "4|Libri con riferimenti al libro giornale"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 35 5
|
||||
|
@ -90,16 +90,12 @@ END
|
||||
BOOLEAN CHK_NRCFDX
|
||||
BEGIN
|
||||
PROMPT 4 12 "N. Rif. allineato a destra per clienti"
|
||||
HELP ""
|
||||
MESSAGE TRUE ENABLE,FLD_CMSGPC
|
||||
MESSAGE FALSE DISABLE,FLD_CMSGPC
|
||||
FIELD NrCliDx
|
||||
END
|
||||
|
||||
NUMBER FLD_CMSGPC 1
|
||||
BOOLEAN FLD_CMSGPC 1
|
||||
BEGIN
|
||||
PROMPT 4 13 "N. Rif. allineato a destra per fornitori"
|
||||
HELP ""
|
||||
FIELD NrForDx
|
||||
END
|
||||
|
||||
@ -168,7 +164,6 @@ END
|
||||
STRING FLD_COCACH 3
|
||||
BEGIN
|
||||
PROMPT 1 3 "Codice causale chiusura "
|
||||
HELP ""
|
||||
USE LF_CAUSALI SELECT MOVAP="C"
|
||||
INPUT CODCAUS FLD_COCACH
|
||||
DISPLAY "Codice" CODCAUS
|
||||
@ -176,13 +171,14 @@ BEGIN
|
||||
OUTPUT FLD_COCACH CODCAUS
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN cg0 -4
|
||||
FLAGS "U"
|
||||
FIELD CoCaCh
|
||||
END
|
||||
|
||||
STRING FLD_COCAAP 3
|
||||
BEGIN
|
||||
PROMPT 42 3 "Codice causale apertura "
|
||||
HELP ""
|
||||
FLAGS "U"
|
||||
USE LF_CAUSALI SELECT MOVAP="A"
|
||||
INPUT CODCAUS FLD_COCAAP
|
||||
COPY DISPLAY FLD_COCACH
|
||||
@ -458,26 +454,28 @@ BEGIN
|
||||
END
|
||||
|
||||
|
||||
NUMBER FLD_RRCCRA 5
|
||||
STRING FLD_RRCCRA 3
|
||||
BEGIN
|
||||
PROMPT 64 11 ""
|
||||
HELP ""
|
||||
FLAGS "U"
|
||||
USE LF_CAUSALI
|
||||
INPUT CODCAUS FLD_RRCCRA
|
||||
COPY DISPLAY FLD_COCACH
|
||||
OUTPUT FLD_RRCCRA CODCAUS
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN cg0 -4
|
||||
FIELD RrCcRa
|
||||
END
|
||||
|
||||
NUMBER FLD_RRCCRI 5
|
||||
STRING FLD_RRCCRI 3
|
||||
BEGIN
|
||||
PROMPT 64 13 ""
|
||||
HELP ""
|
||||
FLAGS "U"
|
||||
COPY USE FLD_RRCCRA
|
||||
INPUT CODCAUS FLD_RRCCRI
|
||||
COPY DISPLAY FLD_COCACH
|
||||
OUTPUT FLD_RRCCRI CODCAUS
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN cg0 -4
|
||||
FIELD RrCcRi
|
||||
END
|
||||
|
@ -126,7 +126,14 @@ const char* TBill::describe()
|
||||
clifo.put("CODCF", _sottoconto);
|
||||
err = clifo.read();
|
||||
if (err == NOERR)
|
||||
{
|
||||
desc = clifo.get("RAGSOC");
|
||||
if (_conto == 0)
|
||||
{
|
||||
_gruppo = clifo.get_int("GRUPPO");
|
||||
_conto = clifo.get_int("CONTO");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return desc;
|
||||
|
Loading…
x
Reference in New Issue
Block a user