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:
guy 1994-10-03 08:44:00 +00:00
parent 254d6b64fb
commit 12dd4aadd3
15 changed files with 402 additions and 339 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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