Aggiunta gestione corrispettivi

git-svn-id: svn://10.65.10.50/trunk@86 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1994-08-29 11:21:01 +00:00
parent 81c13723b9
commit 8861e06745
5 changed files with 128 additions and 134 deletions

View File

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

View File

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

View File

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

View File

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

View File

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