In prima nota ho corretto il calcolo del tipo attivita' (errore 1119),

il segno degli imponibili e del totale documento (errore 1123).
Nelle stampe dei registri (cg4300 e cg4400) ho tolto l'azzeramento dei
due campi da ditta e a ditta (errore 0190)


git-svn-id: svn://10.65.10.50/trunk@429 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1994-10-20 13:31:04 +00:00
parent 4c0a8b0899
commit d8283b4f7b
15 changed files with 2530 additions and 2494 deletions

View File

@ -74,6 +74,7 @@ TMask* TPrimanota_application::load_mask(int n)
TMask& ism = is.sheet_mask();
ism.set_handler(101, imponibile_handler);
ism.set_handler(102, codiva_handler);
ism.set_handler(103, detrazione_handler);
ism.set_handler(104, imposta_handler);
ism.set_handler(109, suspended_handler);
ism.set_handler(209, sheet_clifo_handler);
@ -550,7 +551,12 @@ int TPrimanota_application::read(TMask& m)
ivas().reset();
const bool to_swap = test_swap(FALSE);
if (to_swap)
{
real totdoc(m.get(F_TOTALE));
totdoc = -totdoc;
m.set(F_TOTALE, totdoc.string());
}
for (i = 0; i < _rel->iva_items(); i++)
{
TRectype& r = _rel->iva(i);
@ -566,7 +572,7 @@ int TPrimanota_application::read(TMask& m)
real imposta(r.get("IMPOSTA"));
if (to_swap) imposta = -imposta;
if (imponibile.sign() != imposta.sign())
if (imponibile.sign() * imposta.sign() < 0)
{
warning_box("Registrazione con imponibile e imposta discordi: correzione effettuata");
imposta = -imposta;
@ -618,8 +624,7 @@ void TPrimanota_application::mask2rel(const TMask& m)
TImporto n; n = row;
const TConto conto(row, 2, 0x3);
if (conto.ok())
_saldi.aggiorna(conto, n.valore(), n.sezione(), TRUE);
_saldi.aggiorna(conto, n.valore(), n.sezione(), TRUE);
TRectype &r = _rel->cg(cur-1);
r.zero();
@ -689,6 +694,13 @@ void TPrimanota_application::mask2rel(const TMask& m)
}
const bool to_swap = test_swap(FALSE);
if (to_swap)
{
real totale = _rel->lfile().get("TOTDOC");
totale = -totale;
_rel->lfile().put("TOTDOC", totale);
}
TArray& irows = ivas().rows_array();
cur = 1;
for (int i = 0; i < irows.items(); i++)
@ -712,7 +724,7 @@ void TPrimanota_application::mask2rel(const TMask& m)
real imposta(row.get());
if (to_swap) imposta = -imposta;
if (imponibile.sign() != imposta.sign())
if (imponibile.sign() * imposta.sign() < 0)
{
yesnofatal_box("Registrazione di imponibile e imposta discordi");
imposta = -imposta;
@ -876,16 +888,33 @@ void TPrimanota_application::genera_incasso(const char* causimm)
r.put("GRUPPO", m.get(sid+2));
r.put("CONTO", m.get(sid+3));
r.put("SOTTOCONTO", m.get(sid+4));
r.put("ROWTYPE", " ");
if (i == 2)
{
r.put("DESCR", caus.desc_agg(2));
r.put("RCONTR", 1);
}
r.put("RCONTR", 1);
r.put("ROWTYPE", " ");
}
while (inc.write() == _isreinsert) // In caso di riscrittura
inc.lfile().put("NUMREG", ++_lastreg); // Incrementa numero registrazione
if (inc.good())
{
_saldi.reset(); // Inizializza saldi
_saldi.set_movprovv(FALSE);
_saldi.set_movap(FALSE);
_saldi.set_anno_es(m.get_int(F_ANNOES));
_saldi.set_num_ulmov(_lastreg);
_saldi.set_data_ulmov((TDate)m.get(F_DATAREG));
for (int r = 0; r < i; r++)
{
const TRectype& rec = inc.cg(r);
TConto c; get_conto(rec, c);
const real im(rec.get("IMPORTO"));
const char sezione = rec.get_char("SEZIONE");
_saldi.aggiorna(c, im, sezione, TRUE);
}
_saldi.registra();
}
}
}

View File

@ -45,6 +45,9 @@ const real& TPrimanota_application::cod2IVA(const TMask& m)
static TString16 _codiva;
static real _percent;
if (app().iva() == iva_acquisti && m.get_int(103) == 3)
return ZERO;
const TString& codiva = m.get(102);
if (_codiva != codiva)
{
@ -628,9 +631,9 @@ bool TPrimanota_application::codiva_handler(TMask_field& f, KEY key)
m.set(id, b.sottoconto());
m.set(id+1, b.descrizione());
TMask_field& i = m.field(101);
i.set_dirty();
return imponibile_handler(i, key);
TMask_field& im = m.field(101);
im.set_dirty();
im.on_hit();
} else
if (key == K_ENTER)
{
@ -640,6 +643,16 @@ bool TPrimanota_application::codiva_handler(TMask_field& f, KEY key)
return TRUE;
}
bool TPrimanota_application::detrazione_handler(TMask_field& f, KEY key)
{
if (key == K_SPACE && app().iva() == iva_acquisti)
{
TMask_field& ci = f.mask().field(101);
ci.set_dirty();
ci.on_hit();
}
return TRUE;
}
bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key)
{

View File

@ -72,6 +72,7 @@ class TPrimanota_application : public TRelation_application
static bool sheet_clifo_handler(TMask_field& f, KEY k);
static bool imponibile_handler(TMask_field& f, KEY key);
static bool detrazione_handler(TMask_field& f, KEY key);
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);

View File

@ -46,7 +46,7 @@ public:
bool agenzia_viaggi();
const TString& tipo_attivita();
bool attivita_mista() { return tipo_attivita()[0] == 'M'; }
bool attivita_mista() { char a = tipo_attivita()[0]; return a == 'M' || a == 'E'; }
bool update(long uprotiva, const TDate& lastreg);

View File

@ -1,13 +1,63 @@
PAGE "RIGA IVA" -1 -1 70 13
PAGE "RIGA IVA" -1 -1 78 13
GROUPBOX DLG_NULL 67 5
GROUPBOX DLG_NULL 76 5
BEGIN
PROMPT 1 1 "Conto"
PROMPT 1 1 "@BImposta"
END
STRING 102 4
BEGIN
PROMPT 2 2 "IVA "
FLAGS "U"
USE %IVA
INPUT CODTAB 102
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
DISPLAY "%@6" R0
DISPLAY "Tipo" S1
OUTPUT 102 CODTAB
OUTPUT 211 S0
CHECKTYPE NORMAL
VALIDATE REQIF_FUNC 1 101
END
STRING 211 58
BEGIN
PROMPT 16 2 ""
FLAGS "D"
END
LIST 103 1 59
BEGIN
PROMPT 2 3 "Detraibilita' "
ITEM " |0. Regime normale"
ITEM "1|1. IVA indetraibile su acquisti riferiti a ricavi esenti"
ITEM "3|3. IVA indicata per il solo calcolo di ventilazione"
ITEM "9|9. IVA non detraibile per l'articolo 19"
END
NUMBER 101 15
BEGIN
PROMPT 2 4 "Imponibile "
FLAGS "RV"
PICTURE "."
END
NUMBER 104 15
BEGIN
PROMPT 48 4 "Imposta "
FLAGS "RV"
PICTURE "."
END
GROUPBOX DLG_NULL 76 5
BEGIN
PROMPT 1 6 "@BConto"
END
LIST 106 1 12
BEGIN
PROMPT 2 2 "Tipo "
PROMPT 2 7 "Tipo "
FIELD TMCF
ITEM " |Conto"
MESSAGE SHOW,109|HIDE,209|HIDE,309|SHOW,110|HIDE,210|HIDE,310
@ -20,13 +70,13 @@ END
NUMBER 107 3
BEGIN
PROMPT 21 2 "Gruppo "
PROMPT 22 7 "Gruppo "
FIELD GRUPPO
END
NUMBER 108 3
BEGIN
PROMPT 33 2 "Conto "
PROMPT 38 7 "Conto "
FIELD CONTO
USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO="")
INPUT GRUPPO 107
@ -49,7 +99,7 @@ END
NUMBER 109 6
BEGIN
PROMPT 46 2 "Sottoconto "
PROMPT 55 7 "Sottoconto "
FIELD SOTTOCONTO
USE LF_PCON SELECT SOTTOCONTO!=""
INPUT GRUPPO 107
@ -73,7 +123,7 @@ END
NUMBER 209 6
BEGIN
PROMPT 46 2 "Cliente "
PROMPT 55 7 "Cliente "
USE LF_CLIFO
INPUT TIPOCF "C"
INPUT CODCF 209
@ -93,7 +143,7 @@ END
NUMBER 309 6
BEGIN
PROMPT 46 2 "Fornitore "
PROMPT 55 7 "Fornitore "
USE LF_CLIFO
INPUT TIPOCF "F"
INPUT CODCF 309
@ -113,7 +163,7 @@ END
STRING 110 50
BEGIN
PROMPT 2 3 "Descriz. "
PROMPT 2 8 "Descrizione "
FIELD LF_PCON->DESCR
USE LF_PCON KEY 2
INPUT DESCR 110
@ -128,7 +178,7 @@ END
STRING 210 50
BEGIN
PROMPT 2 3 "Cliente "
PROMPT 2 8 "Cliente "
FIELD LF_CLIFO->RAGSOC
USE LF_CLIFO KEY 2
INPUT TIPOCF "C"
@ -145,7 +195,7 @@ END
STRING 310 50
BEGIN
PROMPT 2 3 "Fornitore "
PROMPT 2 8 "Fornitore "
FIELD LF_PCON->SOTTOCONTO
USE LF_CLIFO KEY 2
INPUT TIPOCF "F"
@ -162,79 +212,18 @@ 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"
PROMPT 2 9 "Tipo Costo/Ricavo "
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 6 "Imposta"
END
STRING 102 4
BEGIN
PROMPT 2 7 "IVA "
FLAGS "U"
USE %IVA
INPUT CODTAB 102
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
DISPLAY "%@6" R0
DISPLAY "Tipo" S1
OUTPUT 102 CODTAB
OUTPUT 211 S0
CHECKTYPE NORMAL
VALIDATE REQIF_FUNC 1 101
END
STRING 211 50
BEGIN
PROMPT 15 7 ""
FLAGS "D"
END
NUMBER 103 1
BEGIN
PROMPT 2 9 "Det. "
SHEET "Codice|Descrizione@53"
INPUT 103
ITEM " |Regime normale"
ITEM "1|IVA indetraibile su acquisti riferiti a ricavi esenti"
ITEM "3|IVA indicata per il solo calcolo di ventilazione"
ITEM "9|IVA non detraibile per l'articolo 19"
OUTPUT 103
OUTPUT 213
END
STRING 213 53
BEGIN
PROMPT 12 9 ""
FLAGS "D"
END
NUMBER 101 15
BEGIN
PROMPT 2 8 "Imponibile "
FLAGS "RV"
PICTURE "."
END
NUMBER 104 15
BEGIN
PROMPT 40 8 "Imposta "
FLAGS "RV"
PICTURE "."
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -13 -1 ""

View File

@ -264,8 +264,8 @@ bool CG4300_App::to_ditta_handler(TMask_field& f, KEY key)
{
const long sel = app().select_firm_range(from, to, freq);
m.set(CG43_FLD_SELECTED, sel);
m.reset(CG43_FLD_DFR);
m.reset(CG43_FLD_DTO);
// m.reset(CG43_FLD_DFR);
// m.reset(CG43_FLD_DTO);
}
}
return TRUE;

View File

@ -106,8 +106,8 @@ bool CG4400_application::mask_firm_to (TMask_field& f, KEY k)
if (cod >= from && cod <= to)
sel.set(i);
}
m.reset(DA_CODICE);
m.reset(A_CODICE);
// m.reset(DA_CODICE);
// m.reset(A_CODICE);
const long numd = sel.ones();
f.mask().set(F_SELECT, numd);
}

View File

@ -8,10 +8,12 @@
#include <config.h>
#include <utility.h>
#include <urldefid.h>
#include <cglib.h>
#include <saldi.h>
#include <clifo.h>
#include <pconti.h>
#include "cglib.h"
#include "cg5200.h"
//HIDDEN const char* REAL_PICTURE = "###.###.###.###";

View File

@ -165,12 +165,14 @@ bool TBill::read(TRectype &r)
int TBill::tipo_att()
{
int tipo_att = 1;
if (_tipo == ' ')
if (tipo() == ' ' && ok())
{
TRectype conto(LF_PCON); read(conto);
TBill bill(gruppo(), conto());
TRectype conto(LF_PCON); bill.read(conto);
const TIndbil ib = (TIndbil)conto.get_int("INDBIL");
if (ib == ib_passivita || ib == ib_ricavi)
{
read(conto);
const int ricser = conto.get_int("RICSER");
tipo_att = (ricser == 0) ? 2 : 1;
}