Migliorata gestione contropartita

git-svn-id: svn://10.65.10.50/trunk@321 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1994-10-05 13:15:33 +00:00
parent 5bc0d3b903
commit ac27109076
9 changed files with 722 additions and 695 deletions

View File

@ -14,9 +14,8 @@ BEGIN
ITEM " |Conto" MESSAGE SHOW,105|HIDE,205|HIDE,305|SHOW,107|HIDE,207|HIDE,307
ITEM "C|Cliente" MESSAGE SHOW,205|HIDE,105|HIDE,305|SHOW,207|HIDE,107|HIDE,307
ITEM "F|Fornitore" MESSAGE SHOW,305|HIDE,105|HIDE,205|SHOW,307|HIDE,107|HIDE,207
FLAGS "DG"
FLAGS "DGU"
GROUP 1
// FLAGS "U"
END
NUMBER 103 3
@ -43,7 +42,7 @@ NUMBER 104 3
BEGIN
PROMPT 15 3 "Conto "
FIELD LF_RCAUSALI->CONTO
USE LF_PCON KEY 1 SELECT (CONTO!="") && (SOTTOCONTO="")
USE LF_PCON KEY 1 SELECT SOTTOCONTO=""
INPUT GRUPPO 103
INPUT CONTO 104
DISPLAY "Gruppo" GRUPPO
@ -55,8 +54,6 @@ BEGIN
OUTPUT 104 CONTO
OUTPUT 103 GRUPPO
OUTPUT 107 DESCR
OUTPUT 207 DESCR
OUTPUT 307 DESCR
MESSAGE DIRTY,105|DIRTY,205|DIRTY,305
WARNING "Conto inesistente o mancante"
ADD RUN CG0 -0
@ -68,7 +65,7 @@ NUMBER 105 6
BEGIN
PROMPT 29 3 "Sottoconto "
FIELD LF_RCAUSALI->SOTTOCONTO
USE LF_PCON SELECT SOTTOCONTO!=""
USE LF_PCON
INPUT GRUPPO 103
INPUT CONTO 104
INPUT SOTTOCONTO 105
@ -102,19 +99,8 @@ BEGIN
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Tipo C/F" TIPOCF
OUTPUT 205 CODCF
<<<<<<< cg0500b.uml
OUTPUT 105 CODCF
OUTPUT 207 RAGSOC
OUTPUT 107 RAGSOC
OUTPUT 307 RAGSOC
=======
OUTPUT 207 RAGSOC
>>>>>>> 1.11
CHECKTYPE NORMAL
<<<<<<< cg0500b.uml
FLAGS "H"
=======
>>>>>>> 1.11
ADD RUN CG0 -1
GROUP 1
END
@ -133,20 +119,8 @@ BEGIN
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Tipo C/F" TIPOCF
OUTPUT 305 CODCF
<<<<<<< cg0500b.uml
OUTPUT 205 CODCF
OUTPUT 105 CODCF
OUTPUT 107 RAGSOC
OUTPUT 207 RAGSOC
OUTPUT 307 RAGSOC
=======
OUTPUT 307 RAGSOC
>>>>>>> 1.11
CHECKTYPE NORMAL
<<<<<<< cg0500b.uml
FLAGS "H"
=======
>>>>>>> 1.11
ADD RUN CG0 -1
GROUP 1
END
@ -176,11 +150,6 @@ BEGIN
OUTPUT 104 CONTO
OUTPUT 103 GRUPPO
OUTPUT 107 DESCR
<<<<<<< cg0500b.uml
OUTPUT 207 DESCR
OUTPUT 307 DESCR
=======
>>>>>>> 1.11
ADD RUN CG0 -0
GROUP 1
END
@ -198,15 +167,8 @@ BEGIN
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" CODCF
OUTPUT 105 CODCF
OUTPUT 205 CODCF
OUTPUT 305 CODCF
OUTPUT 107 RAGSOC
OUTPUT 207 RAGSOC
<<<<<<< cg0500b.uml
OUTPUT 307 RAGSOC
=======
>>>>>>> 1.11
GROUP 1
FLAGS "H"
END
@ -225,14 +187,7 @@ BEGIN
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" CODCF
OUTPUT 305 CODCF
OUTPUT 205 CODCF
OUTPUT 105 CODCF
OUTPUT 307 RAGSOC
<<<<<<< cg0500b.uml
OUTPUT 207 RAGSOC
OUTPUT 107 RAGSOC
=======
>>>>>>> 1.11
GROUP 1
FLAGS "H"
END

View File

@ -162,21 +162,39 @@ bool TPrimanota_application::user_destroy()
// Certified 99%
bool TPrimanota_application::read_caus(const char* cod, int year)
{
const bool ok = causale().read(cod, year);
const bool ok = _causale.read(cod, year);
bool nob = FALSE, dob = FALSE, sal = FALSE;
TipoIVA iva = nessuna_iva;
bool nob = FALSE, dob = FALSE;
if (ok)
{
nob = _causale.num_doc();
dob = _causale.data_doc();
sal = gestione_saldaconto() && _causale.saldaconto();
iva = _causale.iva();
}
TMask& m = *load_mask(causale().iva() == nessuna_iva ? 1 : 2);
TEdit_field& nd = (TEdit_field&)m.field(F_NUMDOC); // Numero documento obbligatorio?
nd.check_type(nob ? CHECK_REQUIRED : CHECK_NORMAL);
TEdit_field& dd = (TEdit_field&)m.field(F_DATADOC); // Data documento obbligatoria?
dd.check_type(dob ? CHECK_REQUIRED : CHECK_NORMAL);
TMask& m = *load_mask(iva == nessuna_iva ? 1 : 2);
m.efield(F_NUMDOC).check_type(nob ? CHECK_REQUIRED : CHECK_NORMAL); // Num. doc. obbligatorio
m.efield(F_DATADOC).check_type(dob ? CHECK_REQUIRED : CHECK_NORMAL); // Data doc. obbligatoria
if (iva != nessuna_iva)
{
const CheckType ct = sal ? CHECK_REQUIRED : CHECK_NORMAL;
m.efield(F_CODPAG).check_type(ct); // Cod. pag. obbligatorio
m.show(F_ANNORIF, sal);
m.show(F_NUMRIF, sal);
if (sal)
{
TString80 val;
if (riferimento_partita())
val = m.get(F_NUMDOC);
else
val.format("%ld", _causale.reg().protocol());
m.set(F_NUMRIF, val);
}
}
return ok;
}
@ -238,6 +256,7 @@ void TPrimanota_application::read_firm_params()
TConfig c(CONFIG_DITTA, "cg");
_ges_val = c.get_bool("GesVal");
_ges_sal = c.get_bool("GesSal");
_rif_par = c.get_bool("RifPar");
}
void TPrimanota_application::init_mask(TMask& m)
@ -248,8 +267,6 @@ void TPrimanota_application::init_mask(TMask& m)
if (_iva != nessuna_iva)
{
read_firm_params();
char clig, forg;
if (_iva == iva_acquisti)
{
@ -275,8 +292,6 @@ void TPrimanota_application::init_mask(TMask& m)
m.send_key(K_SHIFT+K_CTRL+(valuta ? 's' : 'h'), -3);
if (valuta)
m.set(F_VISVAL, "X");
m.efield(F_CODPAG).check_type(gestione_saldaconto() ? CHECK_REQUIRED : CHECK_NORMAL);
}
m.disable(DLG_NEWREC);
@ -285,6 +300,11 @@ void TPrimanota_application::init_mask(TMask& m)
void TPrimanota_application::init_query_mode(TMask& m)
{
<<<<<<< cg2100.cpp
read_firm_params();
enable_menu_item(M_FILE_PRINT);
=======
>>>>>>> 1.22
m.enable(DLG_NEWREC);
}
@ -371,11 +391,11 @@ void TPrimanota_application::init_insert_mode(TMask& m)
}
else
{
if (nriga == 3 || nriga == 4 || nriga == 8 || nriga == 9)
if (nriga >= 3 && nriga <= 9)
continue; // Conti per IVA detraibile e non, ritenute sociali e fiscali
const bool rigaiva = rcaus->get_bool(RCA_RIGAIVA);
if (nriga == 2 || (nriga >= 5 && nriga <= 7) || rigaiva)
if (nriga == 2 || rigaiva)
{
const TString16 codiva(rcaus->get(RCA_CODIVA));
set_ivas_row(-1,codiva,tc,desc);

File diff suppressed because it is too large Load Diff

View File

@ -268,19 +268,21 @@ TImporto TPrimanota_application::get_cgs_imp(int n)
}
// Certified 90%
void TPrimanota_application::add_cgs_imp(int n, const TImporto& imp)
TImporto TPrimanota_application::add_cgs_imp(int n, const TImporto& imp)
{
TImporto tot(get_cgs_imp(n));
tot.set(imp.sezione(), tot.valore() + imp.valore());
set_cgs_imp(n, tot);
return tot;
}
// Certified 90%
void TPrimanota_application::sub_cgs_imp(int n, const real& imp)
TImporto TPrimanota_application::sub_cgs_imp(int n, const real& imp)
{
TImporto tot(get_cgs_imp(n));
tot.set(tot.sezione(), tot.valore() - imp);
set_cgs_imp(n, tot);
return tot;
}
@ -349,22 +351,33 @@ int TPrimanota_application::set_cgs_row(int n, const TImporto& imp,
row.add("");
row.add(desc);
int pos = 0;
if (tipo == 'I' && (pos = type2pos('T')) >= 0)
switch(tipo) // Calcolo contropartita
{
case 'T':
{
TToken_string& irow = ivas().row(0);
for (int i = 5; i < 10; i++)
row.add(irow.get(i == 5 ? 5 : -1));
}
break;
default:
{
const int pos = type2pos('T');
if (pos >= 0)
{
TBill contro(cg.row(pos), 2, 0x3);
row.add(contro.string(0x3));
}
else
{
row.add(" | | | | "); // Contropartita
}
row << '|' << tipo;
else row.add(" | | | | ");
}
break;
}
row << '|' << tipo;
disable_cgs_cells(n, tipo);
cg.force_update(n);
return n;
disable_cgs_cells(n, tipo);
cg.force_update(n);
return n;
}
@ -657,7 +670,7 @@ bool TPrimanota_application::iva_notify(int r, KEY k)
{
oldimp = real(row.get(0)); // Imponibile 0
oldiva = real(row.get(3)); // Imposta 3
if (app().causale().corrispettivi())
if (oldiva.is_zero() && app().causale().corrispettivi())
{
const TCodiceIVA i(row.get(1));
const real percent = i.percentuale();
@ -695,22 +708,33 @@ bool TPrimanota_application::iva_notify(int r, KEY k)
}
// Aggiorna conto sulla riga contabile
const real imp(row.get(0)); // Imponibile
const real imposta(row.get(3)); // Imposta
real imp(row.get(0)); // Imponibile
real imposta(row.get(3)); // Imposta
if (imposta.is_zero() && app().causale().corrispettivi())
{
const TCodiceIVA i(row.get(1));
const real percent = i.percentuale();
imposta = scorpora(imp, percent);
}
TBill conto(row, 5, 0x3);
const int newpos = bill2pos(conto, 'I');
int newpos = bill2pos(conto, 'I');
if (newpos < 0)
{
const TImporto val(app().real2imp(imp, 'I'));
if (val.valore() != ZERO)
app().set_cgs_row(-1, val, conto, "", 'I');
app().set_cgs_row(-1, val, conto, app().causale().descr(2), 'I');
}
else
{
const TImporto val(app().real2imp(imp, 'I'));
app().add_cgs_imp(newpos, val);
TImporto val(app().real2imp(imp, 'I'));
val = app().add_cgs_imp(newpos, val);
if (val.valore().is_zero())
{
app().cgs().destroy(newpos);
newpos = -1;
}
}
oldimp = imp;
oldpos = newpos;
@ -720,18 +744,23 @@ bool TPrimanota_application::iva_notify(int r, KEY k)
const bool detrarre = detraibile(row); // Determina se IVA detraibile
app().causale().bill(detrarre ? 3 : 4, conto);
const char tipod = detrarre ? 'D' : 'N';
const int newposiva = type2pos(tipod);
int newposiva = type2pos(tipod);
if (newposiva < 0)
{
const TImporto val(app().real2imp(imposta, 'I'));
if (val.valore() != ZERO)
app().set_cgs_row(-1, val, conto, "", tipod);
newposiva = app().set_cgs_row(-1, val, conto, "", tipod);
}
else
{
const TImporto val(app().real2imp(imposta, 'I'));
app().add_cgs_imp(newposiva, val);
TImporto val(app().real2imp(imposta, 'I'));
val = app().add_cgs_imp(newposiva, val);
if (val.valore().is_zero())
{
app().cgs().destroy(newposiva);
newposiva = -1;
}
}
oldiva = imposta;
oldposiva = newposiva;
@ -1055,7 +1084,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 = app().iva() == iva_acquisti ? 'F' : 'C';
char tipo = app().clifo();
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);
@ -1077,7 +1106,8 @@ void TPrimanota_application::add_cgs_tot(TMask& m)
// Creazione/Aggiornamento riga totale
const int pos = type2pos('T');
set_cgs_row(pos, real2imp(tot, 'T'), c, "Totale documento", 'T');
set_cgs_row(pos, real2imp(tot, 'T'), c, m.get(F_DESCR), 'T');
calcola_saldo();
}
@ -1174,11 +1204,7 @@ void TPrimanota_application::add_cgs_rit(bool fiscali)
{
const int riga = fiscali ? 8 : 9;
TBill conto; _causale.bill(riga, conto);
TString80 desc("Ritenute ");
desc << (fiscali ? "fiscali" : "sociali");
set_cgs_row(-1, real2imp(imp, tipo), conto, desc, tipo);
set_cgs_row(-1, real2imp(imp, tipo), conto, conto.descrizione(), tipo);
}
else
set_cgs_imp(pos, real2imp(imp, tipo));

View File

@ -40,6 +40,7 @@ class TPrimanota_application : public TRelation_application
TLibro_giornale _giornale; // Libro giornale corrente
TipoIVA _iva; // Tipo di IVA corrente
bool _ges_val, _ges_sal; // Gestione valuta e saldaconto
bool _rif_par; // Riferimento parita (NUM_DOC | PROTIVA)
TSaldo_agg _saldi; // Saldi da aggiornare
@ -113,6 +114,7 @@ protected:
TMask& TPrimanota_application::mask() const;
bool gestione_valuta() const { return _ges_val; }
bool gestione_saldaconto() const { return _ges_sal; }
bool riferimento_partita() const { return _rif_par; }
void fill_sheet(TMask& m) const;
void read_firm_params();
@ -143,8 +145,8 @@ protected:
void set_cgs_imp(int n, const TImporto& importo);
TImporto get_cgs_imp(int n);
void add_cgs_imp(int n, const TImporto& importo);
void sub_cgs_imp(int n, const real& imp);
TImporto add_cgs_imp(int n, const TImporto& importo);
TImporto sub_cgs_imp(int n, const real& imp);
void cgs_pack();
real calcola_saldo() const;

View File

@ -101,11 +101,20 @@ bool TRegistro::corrispettivi() const
TipoIVA TRegistro::iva() const
{
TipoIVA i = (TipoIVA)tipo();
if (i != nessuna_iva && i != iva_vendite && i != iva_acquisti)
switch (i)
{
case nessuna_iva:
case iva_vendite:
case iva_acquisti:
break;
case libro_giornale:
i = nessuna_iva;
break;
default:
error_box("Il registro '%s' non e' un registro IVA o contabile: tipo %d",
(const char*)name(), i);
i = nessuna_iva;
break;
}
return i;
}
@ -306,11 +315,18 @@ const TRectype& TCausale::row(int num) const
TBill& TCausale::bill(int num, TBill& conto) const
{
const TRectype& rec = row(num);
conto.set(rec.get_int("GRUPPO"), rec.get_int("CONTO"),
rec.get_long("SOTTOCONTO"), rec.get_char("TIPOCF"));
conto.set(rec.get_int(RCA_GRUPPO), rec.get_int(RCA_CONTO),
rec.get_long(RCA_SOTTOCONTO), rec.get_char(RCA_TIPOCF));
return conto;
}
const char* TCausale::descr(int num) const
{
const TRectype& rec = row(num);
return rec.get(RCA_DESC);
}
bool TCausale::data_doc() const
{ return _rec.ok() ? _rec.get_bool("DATADOC") : FALSE; }
@ -338,6 +354,9 @@ const char* TCausale::causale_inc_imm() const
const char* TCausale::tipo_doc() const
{ return _rec.ok() ? _rec.get("TIPODOC") : ""; }
bool TCausale::saldaconto() const
{ return _rec.ok() ? (_rec.get_int("TIPOMOV") > 0) : FALSE; }
bool TCausale::ok() const
{
if (iva() == iva_errata)

View File

@ -80,6 +80,7 @@ protected:
public:
TBill& bill(int num, TBill& c) const;
const char* descr(int num) const;
bool data_doc() const;
bool num_doc() const;
@ -94,6 +95,7 @@ public:
TRegistro& reg() const { return (TRegistro&)_reg; }
TipoIVA iva() const;
bool corrispettivi() const;
bool saldaconto() const;
virtual bool ok() const;
bool similar(const TCausale& c) const;

View File

@ -6,8 +6,8 @@
#define CHK_STTFFR 105
#define CHK_STLGIU 106
#define CHK_GESSAL 107
#define CHK_NRCFDX 108
#define FLD_CMSGPC 109
#define CHK_NRCLIDX 108
#define CHK_NRFORDX 109
#define LST_RIFPAR 110
#define CHK_GESVAL 111
#define FLD_CODLIN 112

View File

@ -13,6 +13,7 @@ BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
/* page1 */
@ -87,13 +88,13 @@ BEGIN
FIELD GesSal
END
BOOLEAN CHK_NRCFDX
BOOLEAN CHK_NRCLIDX
BEGIN
PROMPT 4 12 "N. Rif. allineato a destra per clienti"
FIELD NrCliDx
END
BOOLEAN FLD_CMSGPC 1
BOOLEAN CHK_NRFORDX
BEGIN
PROMPT 4 13 "N. Rif. allineato a destra per fornitori"
FIELD NrForDx