Aggiunta gestione corrispettivi
git-svn-id: svn://10.65.10.50/trunk@86 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
81c13723b9
commit
8861e06745
@ -230,9 +230,20 @@ void TPrimanota_application::init_mask(TMask& m)
|
||||
TEdit_field& f = (TEdit_field&)m.field(F_CODREG);
|
||||
f.browse()->cursor()->filter(fil);
|
||||
*/
|
||||
const int g = (_iva == iva_acquisti) ? 2 : 1;
|
||||
m.send_key(K_SHIFT+K_CTRL+'s', -g); // if iva_vendite show group 1
|
||||
m.send_key(K_SHIFT+K_CTRL+'h', g-3); // hide group 2
|
||||
|
||||
char clig, forg;
|
||||
if (_iva == iva_acquisti)
|
||||
{
|
||||
forg = 's';
|
||||
clig = 'h';
|
||||
}
|
||||
else
|
||||
{
|
||||
forg = 'h';
|
||||
clig = causale().reg().corrispettivi() ? 'h' : 's';
|
||||
}
|
||||
m.send_key(K_SHIFT+K_CTRL+clig, -1); // group 1 (clienti)
|
||||
m.send_key(K_SHIFT+K_CTRL+forg, -2); // group 2 (fornitori)
|
||||
|
||||
const bool intra = _causale.intra();
|
||||
m.show(F_CORRLIRE, intra);
|
||||
@ -564,23 +575,32 @@ void TPrimanota_application::mask2rel(const TMask& m)
|
||||
|
||||
if (_iva == nessuna_iva) return;
|
||||
|
||||
int err = ~NOERR;
|
||||
if (m.get_bool(F_OCCASIONALE))
|
||||
if (causale().reg().corrispettivi())
|
||||
{
|
||||
TRelation occas(LF_OCCAS);
|
||||
const TMask& om = occas_mask();
|
||||
om.autosave(&occas);
|
||||
|
||||
err = occas.write();
|
||||
if (err == _isreinsert)
|
||||
err = occas.rewrite();
|
||||
|
||||
if (err == NOERR)
|
||||
_rel->lfile()->put("OCFPI", occas_mask().get(O_CODICE));
|
||||
else
|
||||
error_box("Errore di scrittura sul file dei clienti/fornitori occasionali: %d", err);
|
||||
TRectype& rec = _rel->lfile()->curr();
|
||||
rec.put("TIPO", "");
|
||||
rec.put("CODCF", "");
|
||||
}
|
||||
else
|
||||
{
|
||||
int err = ~NOERR;
|
||||
if (m.get_bool(F_OCCASIONALE))
|
||||
{
|
||||
TRelation occas(LF_OCCAS);
|
||||
const TMask& om = occas_mask();
|
||||
om.autosave(&occas);
|
||||
|
||||
err = occas.write();
|
||||
if (err == _isreinsert)
|
||||
err = occas.rewrite();
|
||||
|
||||
if (err == NOERR)
|
||||
_rel->lfile()->put("OCFPI", occas_mask().get(O_CODICE));
|
||||
else
|
||||
error_box("Errore di scrittura sul file dei clienti/fornitori occasionali: %d", err);
|
||||
}
|
||||
if (err) _rel->lfile()->zero("OCFPI");
|
||||
}
|
||||
if (err) _rel->lfile()->zero("OCFPI");
|
||||
|
||||
TArray& irows = ivas().rows_array();
|
||||
cur = 1;
|
||||
|
134
cg/cg2100c.uml
134
cg/cg2100c.uml
@ -212,21 +212,21 @@ END
|
||||
|
||||
NUMBER F_RIEPILOGO 5
|
||||
BEGIN
|
||||
PROMPT 51 9 "Riepilogo fino al n. "
|
||||
FIELD LF_MOV->UPROTIVA
|
||||
NUM_EXPR (#F_RIEPILOGO==0)||(#F_RIEPILOGO>=#F_PROTIVA)
|
||||
WARNING "Il riepilogo non puo' essere inferiore al protocollo IVA"
|
||||
PROMPT 51 9 "Riepilogo fino al n. "
|
||||
FIELD LF_MOV->UPROTIVA
|
||||
NUM_EXPR (#F_RIEPILOGO==0)||(#F_RIEPILOGO>=#F_PROTIVA)
|
||||
WARNING "Il riepilogo non puo' essere inferiore al protocollo IVA"
|
||||
END
|
||||
|
||||
STRING F_CLIFO 1
|
||||
BEGIN
|
||||
STRING F_CLIFO 1
|
||||
BEGIN
|
||||
PROMPT 0 10 ""
|
||||
FIELD LF_MOV->TIPO
|
||||
FLAGS "H"
|
||||
END
|
||||
END
|
||||
|
||||
NUMBER F_CLIENTE 6
|
||||
BEGIN
|
||||
NUMBER F_CLIENTE 6
|
||||
BEGIN
|
||||
PROMPT 1 10 "Cliente "
|
||||
FIELD LF_MOV->CODCF
|
||||
GROUP 1
|
||||
@ -255,76 +255,76 @@ END
|
||||
|
||||
NUMBER F_FORNITORE 6
|
||||
BEGIN
|
||||
PROMPT 1 10 "Fornitore "
|
||||
FIELD LF_MOV->CODCF
|
||||
GROUP 2
|
||||
USE LF_CLIFO KEY 1
|
||||
INPUT TIPOCF "F"
|
||||
INPUT CODCF F_FORNITORE
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Partita IVA@12" PAIV
|
||||
OUTPUT F_CLIFO TIPOCF
|
||||
OUTPUT F_FORNITORE CODCF
|
||||
OUTPUT F_RAGSOCFORNITORE RAGSOC
|
||||
OUTPUT F_GRUPPOCLIFO GRUPPO
|
||||
OUTPUT F_CONTOCLIFO CONTO
|
||||
OUTPUT F_GRUPPORIC GRUPPORIC
|
||||
OUTPUT F_CONTORIC CONTORIC
|
||||
OUTPUT F_SOTTOCONTORIC SOTTOCRIC
|
||||
OUTPUT F_OCCASIONALE OCCAS
|
||||
OUTPUT F_CODPAG CODPAG
|
||||
OUTPUT F_STATOPAIV STATOPAIV
|
||||
OUTPUT F_PIVAFORNITORE PAIV
|
||||
MESSAGE COPY,F_CLIENTE
|
||||
CHECKTYPE REQUIRED
|
||||
ADD RUN cg0 -1
|
||||
PROMPT 1 10 "Fornitore "
|
||||
FIELD LF_MOV->CODCF
|
||||
GROUP 2
|
||||
USE LF_CLIFO KEY 1
|
||||
INPUT TIPOCF "F"
|
||||
INPUT CODCF F_FORNITORE
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Partita IVA@12" PAIV
|
||||
OUTPUT F_CLIFO TIPOCF
|
||||
OUTPUT F_FORNITORE CODCF
|
||||
OUTPUT F_RAGSOCFORNITORE RAGSOC
|
||||
OUTPUT F_GRUPPOCLIFO GRUPPO
|
||||
OUTPUT F_CONTOCLIFO CONTO
|
||||
OUTPUT F_GRUPPORIC GRUPPORIC
|
||||
OUTPUT F_CONTORIC CONTORIC
|
||||
OUTPUT F_SOTTOCONTORIC SOTTOCRIC
|
||||
OUTPUT F_OCCASIONALE OCCAS
|
||||
OUTPUT F_CODPAG CODPAG
|
||||
OUTPUT F_STATOPAIV STATOPAIV
|
||||
OUTPUT F_PIVAFORNITORE PAIV
|
||||
MESSAGE COPY,F_CLIENTE
|
||||
CHECKTYPE REQUIRED
|
||||
ADD RUN cg0 -1
|
||||
END
|
||||
|
||||
STRING F_RAGSOCFORNITORE 50
|
||||
BEGIN
|
||||
PROMPT 25 10 ""
|
||||
GROUP 2
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "F"
|
||||
INPUT RAGSOC F_RAGSOCFORNITORE
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Partita IVA@12" PAIV
|
||||
DISPLAY "Codice" CODCF
|
||||
COPY OUTPUT F_FORNITORE
|
||||
CHECKTYPE REQUIRED
|
||||
ADD RUN cg0 -1
|
||||
PROMPT 25 10 ""
|
||||
GROUP 2
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "F"
|
||||
INPUT RAGSOC F_RAGSOCFORNITORE
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Partita IVA@12" PAIV
|
||||
DISPLAY "Codice" CODCF
|
||||
COPY OUTPUT F_FORNITORE
|
||||
CHECKTYPE REQUIRED
|
||||
ADD RUN cg0 -1
|
||||
END
|
||||
|
||||
STRING F_RAGSOCCLIENTE 50
|
||||
BEGIN
|
||||
PROMPT 25 10 ""
|
||||
GROUP 1
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "C"
|
||||
INPUT RAGSOC F_RAGSOCCLIENTE
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Partita IVA@12" PAIV
|
||||
DISPLAY "Codice" CODCF
|
||||
COPY OUTPUT F_CLIENTE
|
||||
CHECKTYPE REQUIRED
|
||||
ADD RUN cg0 -1
|
||||
PROMPT 25 10 ""
|
||||
GROUP 1
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "C"
|
||||
INPUT RAGSOC F_RAGSOCCLIENTE
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Partita IVA@12" PAIV
|
||||
DISPLAY "Codice" CODCF
|
||||
COPY OUTPUT F_CLIENTE
|
||||
CHECKTYPE REQUIRED
|
||||
ADD RUN cg0 -1
|
||||
END
|
||||
|
||||
STRING F_PIVACLIENTE 14
|
||||
BEGIN
|
||||
PROMPT 1 11 "Partita IVA "
|
||||
GROUP 1
|
||||
USE LF_CLIFO KEY 3
|
||||
INPUT TIPOCF "C"
|
||||
INPUT STATOPAIV F_STATOPAIV
|
||||
INPUT PAIV F_PIVACLIENTE
|
||||
DISPLAY "Partita IVA@12" PAIV
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Codice" CODCF
|
||||
COPY OUTPUT F_CLIENTE
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN cg0 -1
|
||||
PROMPT 1 11 "Partita IVA "
|
||||
GROUP 1
|
||||
USE LF_CLIFO KEY 3
|
||||
INPUT TIPOCF "C"
|
||||
INPUT STATOPAIV F_STATOPAIV
|
||||
INPUT PAIV F_PIVACLIENTE
|
||||
DISPLAY "Partita IVA@12" PAIV
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Codice" CODCF
|
||||
COPY OUTPUT F_CLIENTE
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN cg0 -1
|
||||
END
|
||||
|
||||
STRING F_PIVAFORNITORE 14
|
||||
|
@ -501,11 +501,14 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key)
|
||||
|
||||
const real val(f.get());
|
||||
if (val != imposta)
|
||||
{
|
||||
const TString16 wrong(val.string("."));
|
||||
const TString16 right(imposta.string("."));
|
||||
if (f.warning_box("Imposta di '%s' errata: dovrebbe essere '%s'",
|
||||
(const char*)wrong, (const char*)right));
|
||||
{
|
||||
if (val != 0.0 || !app().causale().reg().corrispettivi())
|
||||
{
|
||||
const TString16 wrong(val.string("."));
|
||||
const TString16 right(imposta.string("."));
|
||||
if (f.warning_box("Imposta di '%s' errata: dovrebbe essere '%s'",
|
||||
(const char*)wrong, (const char*)right));
|
||||
}
|
||||
}
|
||||
} else
|
||||
if (key == K_F8 && f.get().empty())
|
||||
@ -858,7 +861,7 @@ bool TPrimanota_application::occas_handler(TMask_field& f, KEY key)
|
||||
void TPrimanota_application::add_cgs_tot(TMask& m)
|
||||
{
|
||||
// Lettura del conto dalla maschera
|
||||
const char tipo = m.get(F_CLIFO)[0];
|
||||
char tipo = m.get(F_CLIFO)[0];
|
||||
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);
|
||||
@ -869,8 +872,11 @@ void TPrimanota_application::add_cgs_tot(TMask& m)
|
||||
TConto bill; _causale.bill(1, bill);
|
||||
gruppo = bill.gruppo(); m.set(F_GRUPPOCLIFO, gruppo);
|
||||
conto = bill.conto(); m.set(F_CONTOCLIFO, conto);
|
||||
codice = bill.sottoconto(); m.set(tipo == 'F' ? F_FORNITORE : F_CLIENTE, codice);
|
||||
}
|
||||
|
||||
if (tipo == 'C' && causale().reg().corrispettivi())
|
||||
tipo = ' ';
|
||||
TConto c(gruppo, conto, codice, tipo);
|
||||
real tot(m.get(F_TOTALE));
|
||||
|
||||
@ -897,7 +903,7 @@ void TPrimanota_application::add_cgs_tot(TMask& m)
|
||||
if (tipo == "NI") _causale.bill(6, bill); else
|
||||
if (tipo == "NS") _causale.bill(7, bill);
|
||||
}
|
||||
if (!bill.ok())
|
||||
if (!bill.ok() && !causale().reg().corrispettivi())
|
||||
bill.set(m.get_int(F_GRUPPORIC), m.get_int(F_CONTORIC), m.get_long(F_SOTTOCONTORIC));
|
||||
if (!bill.ok())
|
||||
_causale.bill(2, bill);
|
||||
@ -1045,48 +1051,8 @@ bool TPrimanota_application::conto_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_ENTER && f.get().empty())
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
if (m.get(101).empty()) return TRUE; // Se non c'e' importo ignora la riga
|
||||
|
||||
int riga = 0;
|
||||
|
||||
TString16 cod(m.get(102));
|
||||
TTable iva("%IVA");
|
||||
iva.put("CODTAB", cod);
|
||||
if (iva.read() == NOERR)
|
||||
{
|
||||
TConto conto;
|
||||
cod = iva.get("S1");
|
||||
if (cod == "ES") riga = 5; else
|
||||
if (cod == "NI") riga = 6; else
|
||||
if (cod == "NS") riga = 7; else
|
||||
{
|
||||
TMask& m = app().mask();
|
||||
const char tipocf = m.get(F_CLIFO)[0];
|
||||
const long codcf = m.get_long(F_CLIENTE);
|
||||
TLocalisamfile clifo(LF_CLIFO);
|
||||
clifo.put("TIPOCF", tipocf);
|
||||
clifo.put("CODCF", codcf);
|
||||
clifo.read(); // Try Jolly bill
|
||||
conto.set(clifo.get_int("GRUPPORIC"),
|
||||
clifo.get_int("CONTORIC"),
|
||||
clifo.get_long("SOTTOCRIC"));
|
||||
riga = conto.ok() ? -1 : 2; // else use second row
|
||||
}
|
||||
if (riga > 0)
|
||||
app().causale().bill(riga, conto);
|
||||
|
||||
if (conto.ok())
|
||||
{
|
||||
m.set(106, " ");
|
||||
m.set(107, conto.gruppo());
|
||||
m.set(108, conto.conto());
|
||||
m.set(109, conto.sottoconto());
|
||||
} else riga = 0;
|
||||
}
|
||||
|
||||
if (riga == 0)
|
||||
return f.error_box("Il conto e' obbligatorio sulla riga IVA");
|
||||
if (f.mask().get(101).empty()) return TRUE; // Se non c'e' importo ignora la riga
|
||||
return f.error_box("Il conto e' obbligatorio sulla riga IVA");
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -79,6 +79,13 @@ int TRegistro::tipo() const
|
||||
}
|
||||
|
||||
|
||||
bool TRegistro::corrispettivi() const
|
||||
{
|
||||
const bool c = ok() ? _rec.get_bool("B0") : FALSE;
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
TipoIVA TRegistro::iva() const
|
||||
{
|
||||
TipoIVA i = (TipoIVA)tipo();
|
||||
|
@ -36,6 +36,7 @@ public:
|
||||
|
||||
int tipo() const;
|
||||
TipoIVA iva() const;
|
||||
bool corrispettivi() const;
|
||||
const TString& name() const { return _rec.get("CODTAB").mid(4); }
|
||||
int year() const;
|
||||
TDate last_reg() const { return _rec.get_date("D2"); }
|
||||
|
Loading…
x
Reference in New Issue
Block a user