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(); TMask& ism = is.sheet_mask();
ism.set_handler(101, imponibile_handler); ism.set_handler(101, imponibile_handler);
ism.set_handler(102, codiva_handler); ism.set_handler(102, codiva_handler);
ism.set_handler(103, detrazione_handler);
ism.set_handler(104, imposta_handler); ism.set_handler(104, imposta_handler);
ism.set_handler(109, suspended_handler); ism.set_handler(109, suspended_handler);
ism.set_handler(209, sheet_clifo_handler); ism.set_handler(209, sheet_clifo_handler);
@ -550,7 +551,12 @@ int TPrimanota_application::read(TMask& m)
ivas().reset(); ivas().reset();
const bool to_swap = test_swap(FALSE); 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++) for (i = 0; i < _rel->iva_items(); i++)
{ {
TRectype& r = _rel->iva(i); TRectype& r = _rel->iva(i);
@ -566,7 +572,7 @@ int TPrimanota_application::read(TMask& m)
real imposta(r.get("IMPOSTA")); real imposta(r.get("IMPOSTA"));
if (to_swap) imposta = -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"); warning_box("Registrazione con imponibile e imposta discordi: correzione effettuata");
imposta = -imposta; imposta = -imposta;
@ -618,8 +624,7 @@ void TPrimanota_application::mask2rel(const TMask& m)
TImporto n; n = row; TImporto n; n = row;
const TConto conto(row, 2, 0x3); 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); TRectype &r = _rel->cg(cur-1);
r.zero(); r.zero();
@ -689,6 +694,13 @@ void TPrimanota_application::mask2rel(const TMask& m)
} }
const bool to_swap = test_swap(FALSE); 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(); TArray& irows = ivas().rows_array();
cur = 1; cur = 1;
for (int i = 0; i < irows.items(); i++) for (int i = 0; i < irows.items(); i++)
@ -712,7 +724,7 @@ void TPrimanota_application::mask2rel(const TMask& m)
real imposta(row.get()); real imposta(row.get());
if (to_swap) imposta = -imposta; if (to_swap) imposta = -imposta;
if (imponibile.sign() != imposta.sign()) if (imponibile.sign() * imposta.sign() < 0)
{ {
yesnofatal_box("Registrazione di imponibile e imposta discordi"); yesnofatal_box("Registrazione di imponibile e imposta discordi");
imposta = -imposta; imposta = -imposta;
@ -876,16 +888,33 @@ void TPrimanota_application::genera_incasso(const char* causimm)
r.put("GRUPPO", m.get(sid+2)); r.put("GRUPPO", m.get(sid+2));
r.put("CONTO", m.get(sid+3)); r.put("CONTO", m.get(sid+3));
r.put("SOTTOCONTO", m.get(sid+4)); r.put("SOTTOCONTO", m.get(sid+4));
r.put("ROWTYPE", " ");
if (i == 2) if (i == 2)
{
r.put("DESCR", caus.desc_agg(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 while (inc.write() == _isreinsert) // In caso di riscrittura
inc.lfile().put("NUMREG", ++_lastreg); // Incrementa numero registrazione 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 TString16 _codiva;
static real _percent; static real _percent;
if (app().iva() == iva_acquisti && m.get_int(103) == 3)
return ZERO;
const TString& codiva = m.get(102); const TString& codiva = m.get(102);
if (_codiva != codiva) 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, b.sottoconto());
m.set(id+1, b.descrizione()); m.set(id+1, b.descrizione());
TMask_field& i = m.field(101); TMask_field& im = m.field(101);
i.set_dirty(); im.set_dirty();
return imponibile_handler(i, key); im.on_hit();
} else } else
if (key == K_ENTER) if (key == K_ENTER)
{ {
@ -640,6 +643,16 @@ bool TPrimanota_application::codiva_handler(TMask_field& f, KEY key)
return TRUE; 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) 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 sheet_clifo_handler(TMask_field& f, KEY k);
static bool imponibile_handler(TMask_field& f, KEY key); 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 codiva_handler(TMask_field& f, KEY key);
static bool imposta_handler(TMask_field& f, KEY key); static bool imposta_handler(TMask_field& f, KEY key);
static bool dareavere_handler(TMask_field& f, KEY k); static bool dareavere_handler(TMask_field& f, KEY k);

View File

@ -46,7 +46,7 @@ public:
bool agenzia_viaggi(); bool agenzia_viaggi();
const TString& tipo_attivita(); 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); 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 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 END
LIST 106 1 12 LIST 106 1 12
BEGIN BEGIN
PROMPT 2 2 "Tipo " PROMPT 2 7 "Tipo "
FIELD TMCF FIELD TMCF
ITEM " |Conto" ITEM " |Conto"
MESSAGE SHOW,109|HIDE,209|HIDE,309|SHOW,110|HIDE,210|HIDE,310 MESSAGE SHOW,109|HIDE,209|HIDE,309|SHOW,110|HIDE,210|HIDE,310
@ -20,13 +70,13 @@ END
NUMBER 107 3 NUMBER 107 3
BEGIN BEGIN
PROMPT 21 2 "Gruppo " PROMPT 22 7 "Gruppo "
FIELD GRUPPO FIELD GRUPPO
END END
NUMBER 108 3 NUMBER 108 3
BEGIN BEGIN
PROMPT 33 2 "Conto " PROMPT 38 7 "Conto "
FIELD CONTO FIELD CONTO
USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO="") USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO="")
INPUT GRUPPO 107 INPUT GRUPPO 107
@ -49,7 +99,7 @@ END
NUMBER 109 6 NUMBER 109 6
BEGIN BEGIN
PROMPT 46 2 "Sottoconto " PROMPT 55 7 "Sottoconto "
FIELD SOTTOCONTO FIELD SOTTOCONTO
USE LF_PCON SELECT SOTTOCONTO!="" USE LF_PCON SELECT SOTTOCONTO!=""
INPUT GRUPPO 107 INPUT GRUPPO 107
@ -73,7 +123,7 @@ END
NUMBER 209 6 NUMBER 209 6
BEGIN BEGIN
PROMPT 46 2 "Cliente " PROMPT 55 7 "Cliente "
USE LF_CLIFO USE LF_CLIFO
INPUT TIPOCF "C" INPUT TIPOCF "C"
INPUT CODCF 209 INPUT CODCF 209
@ -93,7 +143,7 @@ END
NUMBER 309 6 NUMBER 309 6
BEGIN BEGIN
PROMPT 46 2 "Fornitore " PROMPT 55 7 "Fornitore "
USE LF_CLIFO USE LF_CLIFO
INPUT TIPOCF "F" INPUT TIPOCF "F"
INPUT CODCF 309 INPUT CODCF 309
@ -113,7 +163,7 @@ END
STRING 110 50 STRING 110 50
BEGIN BEGIN
PROMPT 2 3 "Descriz. " PROMPT 2 8 "Descrizione "
FIELD LF_PCON->DESCR FIELD LF_PCON->DESCR
USE LF_PCON KEY 2 USE LF_PCON KEY 2
INPUT DESCR 110 INPUT DESCR 110
@ -128,7 +178,7 @@ END
STRING 210 50 STRING 210 50
BEGIN BEGIN
PROMPT 2 3 "Cliente " PROMPT 2 8 "Cliente "
FIELD LF_CLIFO->RAGSOC FIELD LF_CLIFO->RAGSOC
USE LF_CLIFO KEY 2 USE LF_CLIFO KEY 2
INPUT TIPOCF "C" INPUT TIPOCF "C"
@ -145,7 +195,7 @@ END
STRING 310 50 STRING 310 50
BEGIN BEGIN
PROMPT 2 3 "Fornitore " PROMPT 2 8 "Fornitore "
FIELD LF_PCON->SOTTOCONTO FIELD LF_PCON->SOTTOCONTO
USE LF_CLIFO KEY 2 USE LF_CLIFO KEY 2
INPUT TIPOCF "F" INPUT TIPOCF "F"
@ -162,79 +212,18 @@ END
LIST 105 1 53 LIST 105 1 53
BEGIN BEGIN
PROMPT 2 4 "Tipo C/R " PROMPT 2 9 "Tipo Costo/Ricavo "
ITEM " |0 - Acquisti o vendite in genere" ITEM " |0. Acquisti o vendite in genere"
ITEM "1|1 - Acquisti beni per rivendita" ITEM "1|1. Acquisti beni per rivendita"
ITEM "2|2 - Acquisti beni ammortizzabili" ITEM "2|2. Acquisti beni ammortizzabili"
ITEM "3|3 - Acquisti beni ammortizzabili con detr. 6%" ITEM "3|3. Acquisti beni ammortizzabili con detr. 6%"
ITEM "4|4 - Vendita beni strumentali art. 17" ITEM "4|4. Vendita beni strumentali art. 17"
ITEM "5|5 - Beni per rivendita da non ventilare" ITEM "5|5. Beni per rivendita da non ventilare"
ITEM "8|8 - Altri beni strumentali acquistati in leasing" ITEM "8|8. Altri beni strumentali acquistati in leasing"
FLAGS "D" FLAGS "D"
HELP "Specifica il tipo Costo/Ricavo del conto" HELP "Specifica il tipo Costo/Ricavo del conto"
END 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 BUTTON DLG_OK 9 2
BEGIN BEGIN
PROMPT -13 -1 "" 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); const long sel = app().select_firm_range(from, to, freq);
m.set(CG43_FLD_SELECTED, sel); m.set(CG43_FLD_SELECTED, sel);
m.reset(CG43_FLD_DFR); // m.reset(CG43_FLD_DFR);
m.reset(CG43_FLD_DTO); // m.reset(CG43_FLD_DTO);
} }
} }
return TRUE; return TRUE;

View File

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

View File

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

View File

@ -165,12 +165,14 @@ bool TBill::read(TRectype &r)
int TBill::tipo_att() int TBill::tipo_att()
{ {
int tipo_att = 1; 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"); const TIndbil ib = (TIndbil)conto.get_int("INDBIL");
if (ib == ib_passivita || ib == ib_ricavi) if (ib == ib_passivita || ib == ib_ricavi)
{ {
read(conto);
const int ricser = conto.get_int("RICSER"); const int ricser = conto.get_int("RICSER");
tipo_att = (ricser == 0) ? 2 : 1; tipo_att = (ricser == 0) ? 2 : 1;
} }