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