Migliorata gestione split payment
git-svn-id: svn://10.65.10.50/branches/R_10_00@23051 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
b130191aae
commit
6788cf17ed
@ -118,7 +118,7 @@ int cg1300(int argc, char* argv[])
|
|||||||
case 'P':
|
case 'P':
|
||||||
{
|
{
|
||||||
TAgg_nprot a;
|
TAgg_nprot a;
|
||||||
a.run(argc, argv,TR("Rinumerazione numero di protocollo"));
|
a.run(argc, argv,TR("Rinumerazione protocollo IVA"));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'T':
|
case 'T':
|
||||||
|
@ -55,13 +55,15 @@ END
|
|||||||
|
|
||||||
RADIOBUTTON F_MODE 1 24
|
RADIOBUTTON F_MODE 1 24
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 6 "@bRiparti da "
|
PROMPT 1 6 "@bRipartire da "
|
||||||
ITEM "U|Ultima stampa"
|
ITEM "U|Ultima stampa"
|
||||||
MESSAGE CLEAR,F_PROT
|
MESSAGE CLEAR,F_PROT
|
||||||
ITEM "N|Numero specificato"
|
ITEM "N|Numero specificato"
|
||||||
MESSAGE ENABLE,F_PROT
|
MESSAGE ENABLE,F_PROT
|
||||||
ITEM "A|Inizio anno"
|
ITEM "A|Inizio anno"
|
||||||
MESSAGE CLEAR,F_PROT
|
MESSAGE CLEAR,F_PROT
|
||||||
|
ITEM "P|Uguale a num. doc."
|
||||||
|
MESSAGE CLEAR,F_PROT
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE F_DA
|
DATE F_DA
|
||||||
@ -78,7 +80,7 @@ END
|
|||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
TOOLBAR "topbar" 0 0 0 2
|
TOOLBAR "topbar" 0 0 0 2
|
||||||
#include <stdbar.h>
|
#include <elabar.h>
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
@ -5,10 +5,12 @@
|
|||||||
#include <progind.h>
|
#include <progind.h>
|
||||||
#include <tabutil.h>
|
#include <tabutil.h>
|
||||||
#include <relation.h>
|
#include <relation.h>
|
||||||
|
#include <recarray.h>
|
||||||
|
|
||||||
#include "cg1300.h"
|
#include "cg1300.h"
|
||||||
#include "cg1303.h"
|
#include "cg1303.h"
|
||||||
|
|
||||||
|
#include <causali.h>
|
||||||
#include <mov.h>
|
#include <mov.h>
|
||||||
#include <partite.h>
|
#include <partite.h>
|
||||||
|
|
||||||
@ -19,9 +21,18 @@ HIDDEN bool filtra_mov(const TRelation* r)
|
|||||||
{
|
{
|
||||||
const TRectype& mov = r->curr();
|
const TRectype& mov = r->curr();
|
||||||
const int annoiva = mov.get_int(MOV_ANNOIVA);
|
const int annoiva = mov.get_int(MOV_ANNOIVA);
|
||||||
const TString16 reg = mov.get(MOV_REG);
|
TString4 reg = mov.get(MOV_REG);
|
||||||
|
|
||||||
|
const TAgg_nprot& a = app();
|
||||||
|
|
||||||
|
if (reg.full() && reg != a.reg())
|
||||||
|
{
|
||||||
|
const TString& codcaus = mov.get(MOV_CODCAUS);
|
||||||
|
const TString& truereg = cache().get(LF_CAUSALI, codcaus, CAU_REG);
|
||||||
|
if (truereg != reg && truereg == a.reg()) // REG incoerente
|
||||||
|
reg = truereg;
|
||||||
|
}
|
||||||
|
|
||||||
TAgg_nprot& a = app();
|
|
||||||
return a.anno() == annoiva && a.reg() == reg;
|
return a.anno() == annoiva && a.reg() == reg;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,14 +54,15 @@ void TAgg_nprot::main_loop()
|
|||||||
bool TAgg_nprot::rinumera_prot(char mode, long last_prot)
|
bool TAgg_nprot::rinumera_prot(char mode, long last_prot)
|
||||||
{
|
{
|
||||||
TTable reg("REG");
|
TTable reg("REG");
|
||||||
TString16 s; s.format("%04d%s", _anno, (const char*)_reg);
|
TString8 s; s.format("%04d%s", _anno, (const char*)_reg);
|
||||||
reg.put("CODTAB", s);
|
reg.put("CODTAB", s);
|
||||||
if (reg.read() != NOERR)
|
if (reg.read() != NOERR)
|
||||||
return error_box(FR("Impossibile leggere il registro %s del %d"),
|
return error_box(FR("Impossibile leggere il registro %s del %d"),
|
||||||
(const char*)_reg, _anno);
|
(const char*)_reg, _anno);
|
||||||
|
|
||||||
|
TFast_isamfile fastmov(LF_MOV);
|
||||||
TRelation rel (LF_MOV);
|
TRelation rel (LF_MOV);
|
||||||
rel.add(LF_PARTITE,"NREG=NUMREG",2);
|
rel.add(LF_PARTITE, "NREG=NUMREG", 2);
|
||||||
|
|
||||||
TLocalisamfile& mov = rel.lfile();
|
TLocalisamfile& mov = rel.lfile();
|
||||||
TLocalisamfile& part= rel.lfile(LF_PARTITE);
|
TLocalisamfile& part= rel.lfile(LF_PARTITE);
|
||||||
@ -62,18 +74,16 @@ bool TAgg_nprot::rinumera_prot(char mode, long last_prot)
|
|||||||
if (nitems == 0)
|
if (nitems == 0)
|
||||||
return warning_box(TR("Non ci sono movimenti da rinumerare"));
|
return warning_box(TR("Non ci sono movimenti da rinumerare"));
|
||||||
|
|
||||||
TConfig cnf(CONFIG_DITTA,"cg");
|
const bool sc_enabled = ini_get_bool(CONFIG_DITTA,"cg", "GesSal");
|
||||||
const bool sc_enabled = cnf.get_bool("GesSal");
|
|
||||||
|
|
||||||
cursor.freeze();
|
cursor.freeze();
|
||||||
cursor = 0L;
|
cursor = 0L;
|
||||||
|
|
||||||
TProgind p(nitems, TR("Elaborazione in corso...") , FALSE, TRUE);
|
TProgind p(nitems, TR("Elaborazione in corso...") , FALSE, TRUE);
|
||||||
|
|
||||||
long protiva, uprotiva;
|
|
||||||
|
|
||||||
if (mode == 'N' || mode == 'U')
|
if (mode == 'N' || mode == 'U')
|
||||||
{
|
{
|
||||||
|
long protiva, uprotiva;
|
||||||
for (; cursor.pos() < nitems; ++cursor)
|
for (; cursor.pos() < nitems; ++cursor)
|
||||||
{
|
{
|
||||||
p.addstatus(1);
|
p.addstatus(1);
|
||||||
@ -115,21 +125,41 @@ bool TAgg_nprot::rinumera_prot(char mode, long last_prot)
|
|||||||
dprot = uprot = 0L;
|
dprot = uprot = 0L;
|
||||||
nprot = last_prot;
|
nprot = last_prot;
|
||||||
|
|
||||||
|
long first_nreg = 0, first_nprot = 0;
|
||||||
|
long last_nreg = 0, last_nprot = 0;
|
||||||
|
|
||||||
for (; cursor.pos() < nitems; ++cursor)
|
for (; cursor.pos() < nitems; ++cursor)
|
||||||
{
|
{
|
||||||
p.addstatus(1);
|
p.addstatus(1);
|
||||||
protiva = mov.get_long(MOV_PROTIVA);
|
const long protiva = mov.get_long(MOV_PROTIVA);
|
||||||
uprotiva = mov.get_long(MOV_UPROTIVA);
|
const long uprotiva = mov.get_long(MOV_UPROTIVA);
|
||||||
|
const TString& reg = mov.get(MOV_REG);
|
||||||
nprot = nprot+1+dprot; //stile RPG
|
|
||||||
dprot = 0L;
|
if (mode == 'P') // Modalità speciale COMARI protiva = numdoc
|
||||||
uprot = 0L;
|
{
|
||||||
dprot = (uprotiva == 0L) ? 0L : (uprotiva - protiva);
|
nprot = mov.get_long(MOV_NUMDOC);
|
||||||
uprot = (uprotiva == 0L) ? 0L : (nprot + dprot);
|
dprot = uprot = 0;
|
||||||
|
}
|
||||||
mov.put(MOV_PROTIVA, nprot);
|
else
|
||||||
mov.put(MOV_UPROTIVA, uprot);
|
{
|
||||||
mov.rewrite();
|
nprot = nprot+1+dprot; //stile RPG
|
||||||
|
dprot = (uprotiva == 0L) ? 0L : (uprotiva - protiva);
|
||||||
|
uprot = (uprotiva == 0L) ? 0L : (nprot + dprot);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nprot != protiva || uprot != uprotiva || reg != _reg)
|
||||||
|
{
|
||||||
|
mov.put(MOV_REG, _reg);
|
||||||
|
mov.put(MOV_PROTIVA, nprot);
|
||||||
|
mov.put(MOV_UPROTIVA, uprot);
|
||||||
|
int err = mov.rewrite();
|
||||||
|
if (err != NOERR)
|
||||||
|
{
|
||||||
|
cantwrite_box("Movimenti IVA");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Aggiorna il nr di prot. iva sul file partite
|
// Aggiorna il nr di prot. iva sul file partite
|
||||||
if (sc_enabled && rel.is_first_match(LF_PARTITE))
|
if (sc_enabled && rel.is_first_match(LF_PARTITE))
|
||||||
{
|
{
|
||||||
@ -139,11 +169,22 @@ bool TAgg_nprot::rinumera_prot(char mode, long last_prot)
|
|||||||
part.rewrite();
|
part.rewrite();
|
||||||
} while (rel.next_match(LF_PARTITE));
|
} while (rel.next_match(LF_PARTITE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const long numreg = mov.get_long(MOV_NUMREG);
|
||||||
|
if (first_nreg <= 0)
|
||||||
|
{
|
||||||
|
first_nreg = numreg;
|
||||||
|
first_nprot = nprot;
|
||||||
|
}
|
||||||
|
last_nreg = numreg;
|
||||||
|
last_nprot = nprot;
|
||||||
}
|
}
|
||||||
|
|
||||||
reg.put("I5", nprot + dprot);
|
reg.put("I5", nprot + dprot);
|
||||||
reg.rewrite();
|
reg.rewrite();
|
||||||
|
|
||||||
return message_box(TR("Rinumerazione numero protocollo completata"));
|
return message_box(FR("Rinumerazione numero protocollo completata\n"
|
||||||
|
"dal movimento %ld (%ld) al movimento %ld (%ld)"),
|
||||||
|
first_nreg, first_nprot, last_nreg, last_nprot);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
16
cg/cg1303.h
16
cg/cg1303.h
@ -2,16 +2,14 @@
|
|||||||
|
|
||||||
class TAgg_nprot : public TSkeleton_application
|
class TAgg_nprot : public TSkeleton_application
|
||||||
{
|
{
|
||||||
TString16 _reg;
|
TString4 _reg;
|
||||||
int _anno;
|
int _anno;
|
||||||
|
|
||||||
public:
|
protected:
|
||||||
virtual void main_loop();
|
|
||||||
int anno() const { return _anno; }
|
|
||||||
const TString& reg() const { return _reg; }
|
|
||||||
|
|
||||||
bool rinumera_prot(char mode, long last_prot);
|
bool rinumera_prot(char mode, long last_prot);
|
||||||
|
|
||||||
TAgg_nprot() { }
|
public:
|
||||||
virtual ~TAgg_nprot() { }
|
int anno() const { return _anno; }
|
||||||
|
const TString& reg() const { return _reg; }
|
||||||
|
virtual void main_loop();
|
||||||
};
|
};
|
||||||
|
@ -2129,7 +2129,7 @@ void TPrimanota_application::mask2ini(const TMask& msk, TConfig& ini)
|
|||||||
for (int r = game->first(); r <= lastrow; r = game->succ(r))
|
for (int r = game->first(); r <= lastrow; r = game->succ(r))
|
||||||
{
|
{
|
||||||
dump_rec(ini, game->riga(r), r, pref);
|
dump_rec(ini, game->riga(r), r, pref);
|
||||||
if (((tipo_movimento)game->riga(r).get_int(PART_TIPOMOV)) == tm_fattura)
|
if (game->riga(r).tipo() == tm_fattura)
|
||||||
dump_fatt(ini, *game, r, pref);
|
dump_fatt(ini, *game, r, pref);
|
||||||
}
|
}
|
||||||
TRecord_array uns = game->unassigned();
|
TRecord_array uns = game->unassigned();
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#define F_DATACOMP 116
|
#define F_DATACOMP 116
|
||||||
#define F_ANNOIVA 117
|
#define F_ANNOIVA 117
|
||||||
#define F_NUMDOCEXT 130
|
#define F_NUMDOCEXT 130
|
||||||
|
#define F_CC_NUMREG 163
|
||||||
|
|
||||||
#define F_CLIFO 128
|
#define F_CLIFO 128
|
||||||
#define F_CLIENTE 151
|
#define F_CLIENTE 151
|
||||||
|
@ -54,6 +54,16 @@ BEGIN
|
|||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
HELP "Data in cui viene registrata l'operazione"
|
HELP "Data in cui viene registrata l'operazione"
|
||||||
MESSAGE COPY,F_ANNOIVA,7,10
|
MESSAGE COPY,F_ANNOIVA,7,10
|
||||||
|
USE LF_MOV KEY 2
|
||||||
|
DISPLAY "Data@10" DATAREG
|
||||||
|
DISPLAY "Numero@7" NUMREG
|
||||||
|
DISPLAY "Causale" CODCAUS
|
||||||
|
DISPLAY "Documento" NUMDOC
|
||||||
|
DISPLAY "Protoc." PROTIVA
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_DATAREG DATAREG
|
||||||
|
OUTPUT F_NUMREG NUMREG
|
||||||
|
CHEKCTYPE SEARCH
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_ANNOIVA 4
|
NUMBER F_ANNOIVA 4
|
||||||
@ -82,6 +92,8 @@ BEGIN
|
|||||||
ADD RUN cg0 -4
|
ADD RUN cg0 -4
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
WARNING "Causale assente"
|
WARNING "Causale assente"
|
||||||
|
MESSAGE EMPTY SHOW,F_NUMREG|HIDE,F_CC_NUMREG
|
||||||
|
MESSAGE SHOW,F_CC_NUMREG|HIDE,F_NUMREG
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_DESCRCAUS 50
|
STRING F_DESCRCAUS 50
|
||||||
@ -107,7 +119,7 @@ BEGIN
|
|||||||
PROMPT 3 10 "Numero operazione "
|
PROMPT 3 10 "Numero operazione "
|
||||||
HELP "Numero del movimento di prima nota da modificare"
|
HELP "Numero del movimento di prima nota da modificare"
|
||||||
FIELD LF_MOV->NUMREG
|
FIELD LF_MOV->NUMREG
|
||||||
USE LF_MOV SELECT BETWEEN(CODCAUS,#F_CODCAUS,#F_CODCAUS)
|
USE LF_MOV
|
||||||
INPUT NUMREG F_NUMREG
|
INPUT NUMREG F_NUMREG
|
||||||
DISPLAY "Numero@7" NUMREG
|
DISPLAY "Numero@7" NUMREG
|
||||||
DISPLAY "Data@10" DATAREG
|
DISPLAY "Data@10" DATAREG
|
||||||
@ -119,6 +131,18 @@ BEGIN
|
|||||||
KEY 1
|
KEY 1
|
||||||
END
|
END
|
||||||
|
|
||||||
|
NUMBER F_CC_NUMREG 7
|
||||||
|
BEGIN
|
||||||
|
PROMPT 3 10 "Numero operazione "
|
||||||
|
HELP "Numero del movimento di prima nota da modificare"
|
||||||
|
USE LF_MOV SELECT BETWEEN(CODCAUS,#F_CODCAUS,#F_CODCAUS)
|
||||||
|
INPUT NUMREG F_CC_NUMREG
|
||||||
|
COPY DISPLAY F_NUMREG
|
||||||
|
OUTPUT F_CC_NUMREG NUMREG
|
||||||
|
MESSAGE COPY F_NUMREG
|
||||||
|
FLAGS "H"
|
||||||
|
END
|
||||||
|
|
||||||
/* DATACOMP new way
|
/* DATACOMP new way
|
||||||
DATE F_DATACOMP
|
DATE F_DATACOMP
|
||||||
BEGIN
|
BEGIN
|
||||||
|
@ -285,7 +285,7 @@ ENDPAGE
|
|||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
PAGE "Riga" -1 -1 78 11
|
PAGE "Riga" -1 -1 78 13
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 76 6
|
GROUPBOX DLG_NULL 76 6
|
||||||
BEGIN
|
BEGIN
|
||||||
|
@ -127,7 +127,7 @@ BEGIN
|
|||||||
ITEM "Pagamenti@14"
|
ITEM "Pagamenti@14"
|
||||||
ITEM "Altri importi@14"
|
ITEM "Altri importi@14"
|
||||||
ITEM "Descrizione@50"
|
ITEM "Descrizione@50"
|
||||||
FLAGS "D"
|
FLAGS "L"
|
||||||
END
|
END
|
||||||
|
|
||||||
SPREADSHEET P_SCADENZE
|
SPREADSHEET P_SCADENZE
|
||||||
@ -146,9 +146,10 @@ BEGIN
|
|||||||
ITEM "Prot. IVA"
|
ITEM "Prot. IVA"
|
||||||
ITEM "Tipo"
|
ITEM "Tipo"
|
||||||
ITEM "Riga pag."
|
ITEM "Riga pag."
|
||||||
ITEM "Blocc."
|
ITEM "Blocco"
|
||||||
ITEM "Motivazione@50"
|
ITEM "Causale\nBlocco@6"
|
||||||
FLAGS "D"
|
ITEM "Motivazione blocco@50"
|
||||||
|
FLAGS "L"
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
@ -218,7 +219,7 @@ ENDPAGE
|
|||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
|
|
||||||
PAGE "Sheet Scadenze" -1 -1 68 15
|
PAGE "Sheet Scadenze" -1 -1 68 10
|
||||||
|
|
||||||
NUMBER 101 4
|
NUMBER 101 4
|
||||||
BEGIN
|
BEGIN
|
||||||
@ -296,28 +297,22 @@ END
|
|||||||
BOOLEAN 114
|
BOOLEAN 114
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 8 "Pagamenti bloccati"
|
PROMPT 1 8 "Pagamenti bloccati"
|
||||||
MESSAGE FALSE CLEAR,115|CLEAR,116
|
|
||||||
MESSAGE TRUE ENABLE,115
|
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING 115 6
|
STRING 115 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 9 "Motivo "
|
PROMPT 26 8 ""
|
||||||
USE %MBP
|
|
||||||
INPUT CODTAB 115
|
|
||||||
DISPLAY "Codice"
|
|
||||||
DISPLAY "Descrizione@50"
|
|
||||||
OUTPUT 115 CODTAB
|
|
||||||
OUTPUT 116 S0
|
|
||||||
FLAGS "D"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING 116 50
|
STRING 116 50 65
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 17 9 ""
|
PROMPT 1 9 ""
|
||||||
FLAGS "D"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
TOOLBAR "" 0 0 0 2
|
||||||
|
|
||||||
BUTTON DLG_CANCEL 12 2
|
BUTTON DLG_CANCEL 12 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -12 -1 ""
|
PROMPT -12 -1 ""
|
||||||
|
@ -51,7 +51,7 @@ bool TPrimanota_application::pag_notify(TSheet_field& ps, int r, KEY k)
|
|||||||
{
|
{
|
||||||
case K_SPACE:
|
case K_SPACE:
|
||||||
{
|
{
|
||||||
const bool can = !recalc && pag.n_rate() > 1 && ps.row(r).get_char(13) != 'X';
|
const bool can = !recalc && pag.n_rate() > 1 && ps.row(r).get_char(14) != 'X';
|
||||||
ps.sheet_mask().enable(DLG_DELREC, can);
|
ps.sheet_mask().enable(DLG_DELREC, can);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -97,7 +97,7 @@ bool TPrimanota_application::pag_notify(TSheet_field& ps, int r, KEY k)
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case K_DEL:
|
case K_DEL:
|
||||||
doit = !recalc && pag.n_rate() > 1 && ps.row(r).get_char(13) != 'X';
|
doit = !recalc && pag.n_rate() > 1 && ps.row(r).get_char(14) != 'X'; // non cancellabile
|
||||||
if (doit)
|
if (doit)
|
||||||
{
|
{
|
||||||
pag.remove_rata(r);
|
pag.remove_rata(r);
|
||||||
@ -882,7 +882,8 @@ bool TPrimanota_application::read_scadenze(TMask& m)
|
|||||||
}
|
}
|
||||||
str.add(scadenza.get(SCAD_DESCR), 11);
|
str.add(scadenza.get(SCAD_DESCR), 11);
|
||||||
str.add(scadenza.get(SCAD_BLOCCATA), 12);
|
str.add(scadenza.get(SCAD_BLOCCATA), 12);
|
||||||
str.add(prot ? "X" : " ", 13);
|
str.add(scadenza.get(SCAD_MOTIVO), 13);
|
||||||
|
str.add(prot ? "X" : " ", 14);
|
||||||
}
|
}
|
||||||
m.set(FS_RDIFFER, pag.rate_differenziate() ? "1" : "2");
|
m.set(FS_RDIFFER, pag.rate_differenziate() ? "1" : "2");
|
||||||
m.set(FS_NAMEPAG, pag.name());
|
m.set(FS_NAMEPAG, pag.name());
|
||||||
@ -1038,8 +1039,8 @@ void TPrimanota_application::write_scadenze(const TMask& m)
|
|||||||
scadenza.put(SCAD_CODPAG, codpag); // Codice pagamento
|
scadenza.put(SCAD_CODPAG, codpag); // Codice pagamento
|
||||||
scadenza.put(SCAD_CODAG, agente); // Codice agente
|
scadenza.put(SCAD_CODAG, agente); // Codice agente
|
||||||
|
|
||||||
scadenza.put(SCAD_DATASCAD, row.get(0)); // 0 = Data scadenza
|
scadenza.put(SCAD_DATASCAD, row.get(0)); // 0 = Data scadenza
|
||||||
scadenza.put(SCAD_IMPORTO, row.get()); // 1 = Importo
|
scadenza.put(SCAD_IMPORTO, row.get()); // 1 = Importo
|
||||||
scadenza.put(SCAD_IMPORTOVAL, row.get()); // 2 = Importo in valuta
|
scadenza.put(SCAD_IMPORTOVAL, row.get()); // 2 = Importo in valuta
|
||||||
row.get(); // 3 = Percentuale
|
row.get(); // 3 = Percentuale
|
||||||
scadenza.put(SCAD_TIPOPAG, row.get()); // 4 = Tipo pagamento
|
scadenza.put(SCAD_TIPOPAG, row.get()); // 4 = Tipo pagamento
|
||||||
@ -1051,6 +1052,7 @@ void TPrimanota_application::write_scadenze(const TMask& m)
|
|||||||
scadenza.put(SCAD_CODCAB, row.get()); //10 = Vs CAB
|
scadenza.put(SCAD_CODCAB, row.get()); //10 = Vs CAB
|
||||||
scadenza.put(SCAD_DESCR, row.get()); //11 = Note
|
scadenza.put(SCAD_DESCR, row.get()); //11 = Note
|
||||||
scadenza.put(SCAD_BLOCCATA, row.get()); //12 = Non pagabile
|
scadenza.put(SCAD_BLOCCATA, row.get()); //12 = Non pagabile
|
||||||
|
scadenza.put(SCAD_MOTIVO, row.get()); //13 = Motivo blocco
|
||||||
scadenza.put(SCAD_IMPORTOANT, ((real &)ant[i]));
|
scadenza.put(SCAD_IMPORTOANT, ((real &)ant[i]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -195,7 +195,7 @@ void TPay_mask::set_pag(const TRectype& oldpag, const TRiga_scadenze& scad,
|
|||||||
const int nrigp = oldpag.get_int(PAGSCA_NRIGP);
|
const int nrigp = oldpag.get_int(PAGSCA_NRIGP);
|
||||||
const TRiga_partite& sum = p.riga(nrigp);
|
const TRiga_partite& sum = p.riga(nrigp);
|
||||||
_assigned = oldpag.get_int(PAGSCA_NRIGA) != TPartita::UNASSIGNED;
|
_assigned = oldpag.get_int(PAGSCA_NRIGA) != TPartita::UNASSIGNED;
|
||||||
_tipomov = (tipo_movimento)sum.get_int(PART_TIPOMOV);
|
_tipomov = sum.tipo();
|
||||||
_swap_ritsoc = sum.sezione() != sum.sezione_ritsoc();
|
_swap_ritsoc = sum.sezione() != sum.sezione_ritsoc();
|
||||||
|
|
||||||
const TRiga_partite& fatt = _assigned ? scad.riga() : sum;
|
const TRiga_partite& fatt = _assigned ? scad.riga() : sum;
|
||||||
@ -920,7 +920,7 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
|
|||||||
riga_fattura.add(riga.get(PART_DATAREG));
|
riga_fattura.add(riga.get(PART_DATAREG));
|
||||||
riga_fattura.add(riga.get(PART_NUMDOC));
|
riga_fattura.add(riga.get(PART_NUMDOC));
|
||||||
riga_fattura.add(riga.get(PART_PROTIVA));
|
riga_fattura.add(riga.get(PART_PROTIVA));
|
||||||
riga_fattura.add(riga.get(PART_TIPOMOV));
|
riga_fattura.add((int)riga.tipo());
|
||||||
|
|
||||||
for (int ra = 1; ra <= riga.rate(); ra++)
|
for (int ra = 1; ra <= riga.rate(); ra++)
|
||||||
{
|
{
|
||||||
@ -930,16 +930,23 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
|
|||||||
row = riga_fattura;
|
row = riga_fattura;
|
||||||
row.add(ra, 1);
|
row.add(ra, 1);
|
||||||
row.add(scad.get(SCAD_DATASCAD), 3);
|
row.add(scad.get(SCAD_DATASCAD), 3);
|
||||||
gm.add_importo(row, scad.importo(FALSE), NULL, 5);
|
gm.add_importo(row, scad.importo(false), NULL, 5);
|
||||||
if (in_valuta)
|
if (in_valuta)
|
||||||
gm.add_importo(row, scad.importo(TRUE), prima_valuta.codice(), 6);
|
gm.add_importo(row, scad.importo(true), prima_valuta.codice(), 6);
|
||||||
|
|
||||||
const TString& descr = scad.get(SCAD_DESCR);
|
const TString& descr = scad.get(SCAD_DESCR);
|
||||||
if (descr.not_empty())
|
if (descr.full())
|
||||||
row.add(descr, 4);
|
row.add(descr, 4);
|
||||||
|
|
||||||
const bool blocked = scad.get_bool(SCAD_BLOCCATA);
|
const bool blocked = scad.get_bool(SCAD_BLOCCATA);
|
||||||
row.add(blocked ? "X" : " ", 13);
|
row.add(blocked ? "X" : " ", 13);
|
||||||
|
if (blocked)
|
||||||
|
{
|
||||||
|
const TString& cbp = scad.get(SCAD_MOTIVO);
|
||||||
|
row.add(cbp);
|
||||||
|
if (cbp.full())
|
||||||
|
row.add(cache().get("%CBP", cbp, "S0"));
|
||||||
|
}
|
||||||
|
|
||||||
const int lastp = scad.last();
|
const int lastp = scad.last();
|
||||||
for (int pa = scad.first(); pa <= lastp; pa = scad.succ(pa))
|
for (int pa = scad.first(); pa <= lastp; pa = scad.succ(pa))
|
||||||
@ -971,7 +978,7 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
|
|||||||
row.add(sum.get(PART_DATAREG));
|
row.add(sum.get(PART_DATAREG));
|
||||||
row.add(sum.get(PART_NUMDOC));
|
row.add(sum.get(PART_NUMDOC));
|
||||||
row.add("");
|
row.add("");
|
||||||
row.add(sum.get(PART_TIPOMOV));
|
row.add((int)sum.tipo());
|
||||||
row.add(pa);
|
row.add(pa);
|
||||||
|
|
||||||
// Le ritenute non possono esistere in valuta
|
// Le ritenute non possono esistere in valuta
|
||||||
@ -983,7 +990,7 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
|
|||||||
TToken_string& rrit = gm.add_colored_row(sheet, 'R');
|
TToken_string& rrit = gm.add_colored_row(sheet, 'R');
|
||||||
rrit.add(TR("Ritenute professionali"), 4);
|
rrit.add(TR("Ritenute professionali"), 4);
|
||||||
gm.add_importo(rrit, rit, FALSE);
|
gm.add_importo(rrit, rit, FALSE);
|
||||||
rrit.add(sum.get(PART_TIPOMOV), 11);
|
rrit.add((int)sum.tipo(), 11);
|
||||||
}
|
}
|
||||||
|
|
||||||
const TImporto soc(sum.sezione_ritsoc(), pag.get_real(PAGSCA_RITSOC));
|
const TImporto soc(sum.sezione_ritsoc(), pag.get_real(PAGSCA_RITSOC));
|
||||||
@ -992,7 +999,7 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
|
|||||||
TToken_string& rrit = gm.add_colored_row(sheet, 'R');
|
TToken_string& rrit = gm.add_colored_row(sheet, 'R');
|
||||||
rrit.add(TR("Ritenute sociali"), 4);
|
rrit.add(TR("Ritenute sociali"), 4);
|
||||||
gm.add_importo(rrit, soc, FALSE);
|
gm.add_importo(rrit, soc, FALSE);
|
||||||
rrit.add(sum.get(PART_TIPOMOV), 11);
|
rrit.add((int)sum.tipo(), 11);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1017,7 +1024,7 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
|
|||||||
gm.add_importo(rabb, abb);
|
gm.add_importo(rabb, abb);
|
||||||
rabb.add("");
|
rabb.add("");
|
||||||
}
|
}
|
||||||
rabb.add(sum.get(PART_TIPOMOV), 11);
|
rabb.add((int)sum.tipo(), 11);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Le differenze cambio possono esistere solo in valuta
|
// Le differenze cambio possono esistere solo in valuta
|
||||||
@ -1029,7 +1036,7 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
|
|||||||
TToken_string& rdiff = gm.add_colored_row(sheet, 'C');
|
TToken_string& rdiff = gm.add_colored_row(sheet, 'C');
|
||||||
rdiff.add(TR("Differenza cambio"), 4);
|
rdiff.add(TR("Differenza cambio"), 4);
|
||||||
gm.add_importo(rdiff, diff);
|
gm.add_importo(rdiff, diff);
|
||||||
rdiff.add(sum.get(PART_TIPOMOV), 11);
|
rdiff.add((int)sum.tipo(), 11);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1089,7 +1096,7 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
|
|||||||
row.add(sum.get(PART_DATAREG));
|
row.add(sum.get(PART_DATAREG));
|
||||||
row.add(sum.get(PART_NUMDOC));
|
row.add(sum.get(PART_NUMDOC));
|
||||||
row.add("");
|
row.add("");
|
||||||
row.add(sum.get(PART_TIPOMOV));
|
row.add((int)sum.tipo());
|
||||||
row.add(pa);
|
row.add(pa);
|
||||||
|
|
||||||
const TImporto rit(sez, pag.get_real(PAGSCA_RITENUTE));
|
const TImporto rit(sez, pag.get_real(PAGSCA_RITENUTE));
|
||||||
@ -1098,7 +1105,7 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
|
|||||||
TToken_string& row = gm.add_colored_row(sheet, 'R');
|
TToken_string& row = gm.add_colored_row(sheet, 'R');
|
||||||
row.add(TR("Ritenute professionali"), 4);
|
row.add(TR("Ritenute professionali"), 4);
|
||||||
gm.add_importo(row, rit, FALSE);
|
gm.add_importo(row, rit, FALSE);
|
||||||
row.add(sum.get(PART_TIPOMOV), 11);
|
row.add((int)sum.tipo(), 11);
|
||||||
tot_lit += rit;
|
tot_lit += rit;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1108,7 +1115,7 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
|
|||||||
TToken_string& row = gm.add_colored_row(sheet, 'R');
|
TToken_string& row = gm.add_colored_row(sheet, 'R');
|
||||||
row.add(TR("Ritenute sociali"), 4);
|
row.add(TR("Ritenute sociali"), 4);
|
||||||
gm.add_importo(row, soc, FALSE);
|
gm.add_importo(row, soc, FALSE);
|
||||||
row.add(sum.get(PART_TIPOMOV), 11);
|
row.add((int)sum.tipo(), 11);
|
||||||
tot_lit += soc;
|
tot_lit += soc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1138,7 +1145,7 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
|
|||||||
rabb.add("");
|
rabb.add("");
|
||||||
tot_lit += abb;
|
tot_lit += abb;
|
||||||
}
|
}
|
||||||
rabb.add(sum.get(PART_TIPOMOV), 11);
|
rabb.add((int)sum.tipo(), 11);
|
||||||
}
|
}
|
||||||
/* Continuo a ritenre impossibile ... per ora
|
/* Continuo a ritenre impossibile ... per ora
|
||||||
// Le differenze cambio possono esistere solo in valuta
|
// Le differenze cambio possono esistere solo in valuta
|
||||||
@ -1150,7 +1157,7 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
|
|||||||
TToken_string& rdiff = gm.add_colored_row(sheet, 'C');
|
TToken_string& rdiff = gm.add_colored_row(sheet, 'C');
|
||||||
rdiff.add(TR("Differenza cambio"), 4);
|
rdiff.add(TR("Differenza cambio"), 4);
|
||||||
gm.add_importo(rdiff, diff);
|
gm.add_importo(rdiff, diff);
|
||||||
rdiff.add(sum.get(PART_TIPOMOV), 11);
|
rdiff.add((int)sum.tipo(), 11);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
@ -1245,6 +1252,12 @@ bool TGame_mask::scadenze_notify(TSheet_field& scadenze, int r, KEY k)
|
|||||||
gm.send_key(K_CTRL + 'N', 0, &scadenze); // Simula la pressione del tasto nuovo
|
gm.send_key(K_CTRL + 'N', 0, &scadenze); // Simula la pressione del tasto nuovo
|
||||||
return false; // Rifiuta l'aggiunta di una riga
|
return false; // Rifiuta l'aggiunta di una riga
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (k == K_DEL || k == K_SPACE)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,9 +155,23 @@ END
|
|||||||
BOOLEAN 113
|
BOOLEAN 113
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 12 11 "Bloccata"
|
PROMPT 12 11 "Bloccata"
|
||||||
|
MESSAGE FALSE CLEAR,114
|
||||||
|
MESSAGE TRUE ENABLE,114
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN 114
|
STRING 114 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 30 11 "Motivo "
|
||||||
|
USE %CBP
|
||||||
|
INPUT CODTAB 114
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT 114 CODTAB
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN 115
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 -1 "Non cancellabile"
|
PROMPT 1 -1 "Non cancellabile"
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
|
@ -232,6 +232,7 @@ BEGIN
|
|||||||
ITEM "Vs.CAB"
|
ITEM "Vs.CAB"
|
||||||
ITEM "Note@50"
|
ITEM "Note@50"
|
||||||
ITEM "Bloccata"
|
ITEM "Bloccata"
|
||||||
|
ITEM "Motivo"
|
||||||
ITEM "Non cancellabile"
|
ITEM "Non cancellabile"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
@ -157,7 +157,6 @@ public: // vedi sopra per le fisime morali
|
|||||||
int _tipodet; // tipo detraibilita'
|
int _tipodet; // tipo detraibilita'
|
||||||
virtual TObject* dup() const { return new _CorrItem(*this); }
|
virtual TObject* dup() const { return new _CorrItem(*this); }
|
||||||
_CorrItem() {}
|
_CorrItem() {}
|
||||||
virtual ~_CorrItem() {}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class _DescrItem : public TObject
|
class _DescrItem : public TObject
|
||||||
|
187
cg/cg4301.cpp
187
cg/cg4301.cpp
@ -496,9 +496,6 @@ void TLiquidazione_app::zero_att(int month, const char* codatt)
|
|||||||
// Se stiamo ricalcolando per registri(_recalc_regis) azzera PRM e PRP
|
// Se stiamo ricalcolando per registri(_recalc_regis) azzera PRM e PRP
|
||||||
start = 2; stop = 3;
|
start = 2; stop = 3;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
if (atoi(_year) < 1998)
|
|
||||||
stop = 0; // Solo PIM
|
|
||||||
// PIM / PIS
|
// PIM / PIS
|
||||||
for (int i = start; i <= stop; i++) // Ciclo per le tabelle da azzerare
|
for (int i = start; i <= stop; i++) // Ciclo per le tabelle da azzerare
|
||||||
{
|
{
|
||||||
@ -580,12 +577,15 @@ bool TLiquidazione_app::ivadiff_chiusa(const TRectype& mov, const TDate& fine) c
|
|||||||
const TDate data = rid.get("DATAREGP");
|
const TDate data = rid.get("DATAREGP");
|
||||||
if (data > fine)
|
if (data > fine)
|
||||||
continue;
|
continue;
|
||||||
|
if (data == fine && rid.get_long("NUMREGP") == numreg)
|
||||||
|
continue; // Ignora pagamento automatico dopo un anno
|
||||||
|
|
||||||
const real imp = rid.get(RMI_IMPOSTA);
|
const real imp = rid.get(RMI_IMPOSTA);
|
||||||
if (!imp.is_zero())
|
if (!imp.is_zero())
|
||||||
{
|
{
|
||||||
const char sez = rid.get_char("SEZIONE");
|
const char sez = rid.get_char("SEZIONE");
|
||||||
tot += TImporto(sez, imp);
|
tot += TImporto(sez, imp);
|
||||||
if (rid.get_int(MOV_TIPOMOV) > 1)
|
if (!some_pag && rid.get_int(MOV_TIPOMOV) > 1)
|
||||||
some_pag = true;
|
some_pag = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -786,6 +786,59 @@ static void LOG_IVA_DIFF(const TRectype& id)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void LOG_PIM_DIFF(const TRectype& pim)
|
||||||
|
{
|
||||||
|
#ifndef NDEBUG
|
||||||
|
static FILE* file[2] = { NULL, NULL };
|
||||||
|
|
||||||
|
const real iva_ven = pim.get("R29");
|
||||||
|
const real iva_acq = pim.get("R33");
|
||||||
|
|
||||||
|
int nf = -1;
|
||||||
|
if (!iva_ven.is_zero())
|
||||||
|
nf = 0; else
|
||||||
|
if (!iva_acq.is_zero())
|
||||||
|
nf = 1;
|
||||||
|
if (nf < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
FILE*& f = file[nf];
|
||||||
|
if (f == NULL)
|
||||||
|
{
|
||||||
|
const char* name = NULL;
|
||||||
|
switch (nf)
|
||||||
|
{
|
||||||
|
case 0: name = "PIM_Ven_Diff.log"; break;
|
||||||
|
case 1: name = "PIM_Acq_Diff.log"; break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
fopen_s(&f, name, "w");
|
||||||
|
if (f == NULL)
|
||||||
|
{
|
||||||
|
cantwrite_box(name);
|
||||||
|
fopen_s(&f, name, "w");
|
||||||
|
}
|
||||||
|
if (f != NULL)
|
||||||
|
fprintf(f, "CODTAB\tGen\tFeb\tMar\tApr\tMag\tGiu\tLug\tAgo\tSet\tOtt\tNov\tDic\n");
|
||||||
|
}
|
||||||
|
if (f != NULL)
|
||||||
|
{
|
||||||
|
TToken_string msg(255, '\t');
|
||||||
|
const TString& codtab = pim.get("CODTAB");
|
||||||
|
msg = codtab;
|
||||||
|
const int mese = atoi(codtab.mid(14, 2));
|
||||||
|
for (int i = mese; i > 0; i--)
|
||||||
|
msg.add(" ");
|
||||||
|
if (!iva_ven.is_zero())
|
||||||
|
msg.add(iva_ven.stringa(0,2));
|
||||||
|
else
|
||||||
|
msg.add(iva_acq.stringa(0,2));
|
||||||
|
fprintf(f, "%s\n", (const char*)msg);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static bool is_autofattura_articolo_17(const TRectype& mov)
|
static bool is_autofattura_articolo_17(const TRectype& mov)
|
||||||
{
|
{
|
||||||
// E' giusto prendere il tipo documento dal movimento senza fidarsi della causale? si.
|
// E' giusto prendere il tipo documento dal movimento senza fidarsi della causale? si.
|
||||||
@ -978,7 +1031,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
if (_isviaggio)
|
if (_isviaggio)
|
||||||
f74 = TDate(1, 1, year_int-1);
|
f74 = TDate(1, 1, year_int-1);
|
||||||
|
|
||||||
if (_recalc_regis) // Vecchia selezione priam del 1998 o calcolo progressivi per stampa registri bollati
|
if (_recalc_regis) // Vecchia selezione prima del 1998 o calcolo progressivi per stampa registri bollati
|
||||||
{
|
{
|
||||||
t.set_month(month == 13 ? 12 : month);
|
t.set_month(month == 13 ? 12 : month);
|
||||||
t.set_year(year_int);
|
t.set_year(year_int);
|
||||||
@ -1047,7 +1100,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
if (_mov->get_long(MOV_CODCF) == 940)
|
if (_mov->get_long(MOV_NUMREG) == 21438)
|
||||||
int cazzone = 1;
|
int cazzone = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1069,15 +1122,15 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
continue; // Ignora movimento di split payment
|
continue; // Ignora movimento di split payment
|
||||||
|
|
||||||
// Inizio gestione IVA differita
|
// Inizio gestione IVA differita
|
||||||
const bool iva_diff = _mov->get_bool(MOV_LIQDIFF);
|
const bool iva_diff = _mov->get_bool(MOV_LIQDIFF) && is_IVA_diff(_mov->curr());
|
||||||
const bool iva_cass = !iva_diff && !_isviaggio && tm > tm_nessuno && _mov->get_bool(MOV_IVAXCASSA) && is_IVAxCassa(_mov->curr());
|
const bool iva_cass = !iva_diff && !_isviaggio && tm > tm_nessuno && _mov->get_bool(MOV_IVAXCASSA) && is_IVAxCassa(_mov->curr());
|
||||||
const bool movdiff = (iva_diff || iva_cass) && !_recalc_regis; // Aggiunto test su ricalcolo da registri 13-12-2012
|
const bool bIsMovDiff = (iva_diff || iva_cass) && !_recalc_regis; // Aggiunto test su ricalcolo da registri 13-12-2012
|
||||||
bool dok = is_date_ok(date, month, liqmonth, year_int);
|
bool dok = is_date_ok(date, month, liqmonth, year_int);
|
||||||
|
|
||||||
TPartite_array arrpart; // Partite interessate
|
TPartite_array arrpart; // Partite interessate
|
||||||
TPointer_array pagscatt; // Righe di pagsca interessate
|
TPointer_array pagscatt; // Righe di pagsca interessate
|
||||||
|
|
||||||
if (movdiff && tm == tm_fattura)
|
if (bIsMovDiff && tm == tm_fattura)
|
||||||
{
|
{
|
||||||
const bool id_chiusa = ivadiff_chiusa(_mov->curr(), inizio);
|
const bool id_chiusa = ivadiff_chiusa(_mov->curr(), inizio);
|
||||||
if (!dok && id_chiusa)
|
if (!dok && id_chiusa)
|
||||||
@ -1244,7 +1297,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
if (_comp_acconto && !_isdifferita && date.month() == accmonth && date.day() > 20)
|
if (_comp_acconto && !_isdifferita && date.month() == accmonth && date.day() > 20)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Ciclo sulle righe iva del movimento
|
// Ciclo sulle righe IVA del movimento
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
const int rmi_tipoatt = max(_rmoviva->get_int(RMI_TIPOATT), 1); // Poteva capitare tipoatt == 0
|
const int rmi_tipoatt = max(_rmoviva->get_int(RMI_TIPOATT), 1); // Poteva capitare tipoatt == 0
|
||||||
@ -1314,7 +1367,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
real impon_det; // Imponibile detraibile
|
real impon_det; // Imponibile detraibile
|
||||||
real impos_det; // Imposta detraibile
|
real impos_det; // Imposta detraibile
|
||||||
|
|
||||||
if (movdiff && tm == tm_fattura)
|
if (bIsMovDiff && tm == tm_fattura)
|
||||||
{
|
{
|
||||||
const char sezfat = tipomov == vendita ? 'D' : 'A';
|
const char sezfat = tipomov == vendita ? 'D' : 'A';
|
||||||
const TDate datareg = _mov->get(MOV_DATAREG);
|
const TDate datareg = _mov->get(MOV_DATAREG);
|
||||||
@ -1346,6 +1399,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
id.put("IMPORTO", imponibile_orig+imposta_orig);
|
id.put("IMPORTO", imponibile_orig+imposta_orig);
|
||||||
id.put(RMI_IMPONIBILE, imponibile_orig);
|
id.put(RMI_IMPONIBILE, imponibile_orig);
|
||||||
|
|
||||||
|
/* cazzata?
|
||||||
if (percind > ZERO) // Nel caso di IVA indetraibile memorizza solo la parte detraibile!
|
if (percind > ZERO) // Nel caso di IVA indetraibile memorizza solo la parte detraibile!
|
||||||
{
|
{
|
||||||
real imp_det, iva_det, imp_ind, iva_ind;
|
real imp_det, iva_det, imp_ind, iva_ind;
|
||||||
@ -1354,6 +1408,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
id.put(RMI_IMPOSTA, iva_det);
|
id.put(RMI_IMPOSTA, iva_det);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
*/
|
||||||
id.put(RMI_IMPOSTA, imposta_orig);
|
id.put(RMI_IMPOSTA, imposta_orig);
|
||||||
|
|
||||||
const int ew = id.write_rewrite();
|
const int ew = id.write_rewrite();
|
||||||
@ -1503,7 +1558,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (movdiff)
|
if (bIsMovDiff)
|
||||||
{
|
{
|
||||||
if (is_date_ok(date, month, liqmonth, year_int)) // 5-3-2014
|
if (is_date_ok(date, month, liqmonth, year_int)) // 5-3-2014
|
||||||
{
|
{
|
||||||
@ -1525,7 +1580,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
//qui da verificare
|
//qui da verificare
|
||||||
|
|
||||||
if ((imponibile.is_zero() && imposta.is_zero()) &&
|
if ((imponibile.is_zero() && imposta.is_zero()) &&
|
||||||
(movdiff &&
|
(bIsMovDiff &&
|
||||||
(is_detraibile > 0 ||
|
(is_detraibile > 0 ||
|
||||||
(diff_imp.is_zero() && diff_iva.is_zero() &&
|
(diff_imp.is_zero() && diff_iva.is_zero() &&
|
||||||
incdiff_imp.is_zero() && incdiff_iva.is_zero())
|
incdiff_imp.is_zero() && incdiff_iva.is_zero())
|
||||||
@ -1575,7 +1630,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
codreg = comune.get_int(COM_CODREG) + 1;
|
codreg = comune.get_int(COM_CODREG) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (movdiff)
|
if (bIsMovDiff)
|
||||||
{
|
{
|
||||||
vt_imponibile[codreg] += incdiff_imp;
|
vt_imponibile[codreg] += incdiff_imp;
|
||||||
vt_imposta[codreg] += incdiff_iva;
|
vt_imposta[codreg] += incdiff_iva;
|
||||||
@ -2359,28 +2414,27 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
cs.add(v.string(), 1);
|
cs.add(v.string(), 1);
|
||||||
tab->put("S2",cs);
|
tab->put("S2",cs);
|
||||||
|
|
||||||
if (is_detraibile == 0 &&
|
if (is_detraibile == 0 && // eseguire solo una volta (is_detraibile è in un ciclo da 0 a 1)
|
||||||
(!diff_imp.is_zero() ||!diff_iva.is_zero() ||
|
(!diff_imp.is_zero() || !diff_iva.is_zero() ||
|
||||||
!incdiff_imp.is_zero() || !incdiff_iva.is_zero()))
|
!incdiff_imp.is_zero() || !incdiff_iva.is_zero()))
|
||||||
{
|
{
|
||||||
if (tipomov == vendita)
|
if (tipomov == vendita)
|
||||||
{
|
{
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
if (month == 7 && reg == "VEN" && !incdiff_iva.is_zero())
|
if (month == 13 && reg == "VEN" && !incdiff_iva.is_zero())
|
||||||
{
|
{
|
||||||
const real oldv = _pim->get("R29");
|
const real oldv = tab->get("R29");
|
||||||
const real newv = oldv + incdiff_iva;
|
const real newv = oldv + incdiff_iva;
|
||||||
__trace("%s %s\t%s\t%s\t%7ld\t%s\t+\t%s\t=\t%s", tab->name(), (const char*)tab->curr().get("CODTAB"), (const char*)reg, (const char*)tipocr_s,
|
__trace("%s %s\t%s\t%s\t%7ld\t%s\t+\t%s\t=\t%s", tab->name(), (const char*)tab->curr().get("CODTAB"), (const char*)reg, (const char*)tipocr_s,
|
||||||
_mov->get_long(MOV_NUMREG), oldv.stringa(12, 2), incdiff_iva.stringa(12, 2), newv.stringa(12, 2));
|
_mov->get_long(MOV_NUMREG), oldv.stringa(12, 2), incdiff_iva.stringa(12, 2), newv.stringa(12, 2));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
// fatture vendita a liquidazione differita
|
||||||
|
|
||||||
// fatture vendita a liquidazione differita
|
|
||||||
tab->curr().add("R26", diff_imp);
|
tab->curr().add("R26", diff_imp);
|
||||||
tab->curr().add("R27", diff_iva);
|
tab->curr().add("R27", diff_iva);
|
||||||
tab->curr().add("R28", incdiff_imp);
|
tab->curr().add("R28", incdiff_imp);
|
||||||
tab->curr().add("R29", incdiff_iva);
|
tab->curr().add("R29", incdiff_iva);
|
||||||
|
|
||||||
fdiff_imp += diff_imp;
|
fdiff_imp += diff_imp;
|
||||||
fdiff_iva += diff_iva;
|
fdiff_iva += diff_iva;
|
||||||
fdiffinc_imp += incdiff_imp;
|
fdiffinc_imp += incdiff_imp;
|
||||||
@ -2670,7 +2724,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
_plm->rewrite();
|
_plm->rewrite();
|
||||||
_pam->rewrite();
|
_pam->rewrite();
|
||||||
_pum->rewrite();
|
_pum->rewrite();
|
||||||
_pom->rewrite();
|
_pom->rewrite();
|
||||||
|
|
||||||
if (month == 13)
|
if (month == 13)
|
||||||
{
|
{
|
||||||
@ -2678,10 +2732,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
for (int reg = 0; reg < 23; reg++)
|
for (int reg = 0; reg < 23; reg++)
|
||||||
{
|
{
|
||||||
look_pem(pem, reg);
|
look_pem(pem, reg);
|
||||||
real r = pem.get_real("R0") + vt_imponibile[reg];
|
pem.curr().add("R0", vt_imponibile[reg]);
|
||||||
pem.put("R0", r);
|
pem.curr().add("R1", vt_imposta[reg]);
|
||||||
r = pem.get_real("R1") + vt_imposta[reg];
|
|
||||||
pem.put("R1", r);
|
|
||||||
pem.rewrite();
|
pem.rewrite();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3436,7 +3488,6 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
|||||||
// totali per annuali
|
// totali per annuali
|
||||||
real vol_aff_1 = ZERO;
|
real vol_aff_1 = ZERO;
|
||||||
real vol_aff_2 = ZERO;
|
real vol_aff_2 = ZERO;
|
||||||
real vol_aff_t = ZERO;
|
|
||||||
real vol_aff_l = ZERO;
|
real vol_aff_l = ZERO;
|
||||||
real tot_cong = ZERO;
|
real tot_cong = ZERO;
|
||||||
|
|
||||||
@ -3458,9 +3509,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
|||||||
}
|
}
|
||||||
|
|
||||||
TLocalisamfile& attiv = _nditte->lfile(LF_ATTIV);
|
TLocalisamfile& attiv = _nditte->lfile(LF_ATTIV);
|
||||||
|
FOR_EACH_TOKEN (atts, tmpatt)
|
||||||
const char* tmpatt;
|
|
||||||
while ((tmpatt = atts.get()) != NULL)
|
|
||||||
{
|
{
|
||||||
const TString16 att = tmpatt;
|
const TString16 att = tmpatt;
|
||||||
|
|
||||||
@ -3626,21 +3675,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
|||||||
*/
|
*/
|
||||||
if (attc == 0 && is_lim && is_month_ok_strict(m,month))
|
if (attc == 0 && is_lim && is_month_ok_strict(m,month))
|
||||||
{
|
{
|
||||||
bool somma_rettifiche = FALSE;
|
const bool somma_rettifiche = month < 13 || m < 13; // CM00278
|
||||||
if (year_int < 2000)
|
|
||||||
{
|
|
||||||
// se sono per benzinaro le conta solo in annuale,
|
|
||||||
// se no vanno solo in periodica
|
|
||||||
// almeno cosi' dicevano fino ad agosto
|
|
||||||
// poi, sara' il caldo, mi hanno detto che e' sbagliato
|
|
||||||
const TString& descrett = _lim->get("S0");
|
|
||||||
const bool isforbenzinaro = descrett[0] == '$' || (descrett[0] == '>' && descrett[1] == '>');
|
|
||||||
somma_rettifiche = !(month == 13 && !isforbenzinaro) && m < 13;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
somma_rettifiche = month < 13 || m < 13; // CM00278
|
|
||||||
}
|
|
||||||
if (somma_rettifiche)
|
if (somma_rettifiche)
|
||||||
{
|
{
|
||||||
const real rett = _lim->get_real("R5");
|
const real rett = _lim->get_real("R5");
|
||||||
@ -3787,30 +3822,26 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
|||||||
|
|
||||||
if (month == 13)
|
if (month == 13)
|
||||||
{
|
{
|
||||||
// totalizza volumi affari e calcola nuovo prorata
|
// totalizza volumi affari e calcola nuovo prorata per tutte le attività
|
||||||
// per tutte le attivita'
|
FOR_EACH_TOKEN(atts, tmpatt)
|
||||||
|
|
||||||
atts.restart();
|
|
||||||
while ((tmpatt = atts.get()) != NULL)
|
|
||||||
{
|
{
|
||||||
const TString8 att(tmpatt);
|
const TString8 att = tmpatt;
|
||||||
const int tipoatt = att.right(1)[0] - '0';
|
const int tipoatt = att.right(1)[0] - '0';
|
||||||
if (tipoatt == 1) // su PLA l'attivita' e' sempre 1
|
if (tipoatt == 1) // su PLA l'attivita' e' sempre 1
|
||||||
{
|
{
|
||||||
if (!look_pla(att))
|
if (!look_pla(att))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
real vf1 = _pla->get_real("R14");
|
const real vf1 = _pla->get("R14");
|
||||||
real vf2 = _pla->get("S1");
|
const real vf2 = _pla->get("S1");
|
||||||
real iaq = _pla->get_real("R11"); // IVA acquisti
|
const real iaq = _pla->get("R11"); // IVA acquisti
|
||||||
real ppg = _pla->get_real("R12"); // pro-rata pagato
|
const real ppg = _pla->get("R12"); // pro-rata pagato
|
||||||
|
|
||||||
vol_aff_1 += vf1;
|
vol_aff_1 += vf1;
|
||||||
vol_aff_2 += vf2;
|
vol_aff_2 += vf2;
|
||||||
vol_aff_t = vf1 + vf2;
|
|
||||||
vol_aff_l += _pla->get_real("R0"); // volume affari lordo
|
vol_aff_l += _pla->get_real("R0"); // volume affari lordo
|
||||||
|
|
||||||
real es_c1 = _pla->get_real("R1");
|
real es_c1 = _pla->get_real("R1"); // Tipo esenzione B1
|
||||||
real es_c2 = _pla->get_real("R2");
|
real es_c2 = _pla->get_real("R2");
|
||||||
real es_c3 = _pla->get_real("R3");
|
real es_c3 = _pla->get_real("R3");
|
||||||
real es_c1a = _pla->get_real("R15");
|
real es_c1a = _pla->get_real("R15");
|
||||||
@ -3821,7 +3852,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
|||||||
real prorata = 0.0;
|
real prorata = 0.0;
|
||||||
real conguaglio = 0.0;
|
real conguaglio = 0.0;
|
||||||
real topay = 0.0;
|
real topay = 0.0;
|
||||||
const real ris = vol_aff_t; // gia' esclusi: NS, B3, cess. amm
|
const real ris = vf1 + vf2; // gia' esclusi: NS, B3, cess. amm
|
||||||
|
|
||||||
// calcola nuovo prorata dal 1998 per ogni attivita' (miste: 1+2)
|
// calcola nuovo prorata dal 1998 per ogni attivita' (miste: 1+2)
|
||||||
const real rsa = ris - (es_c1a-es_c1a_am) - (es_c3-es_c3_am);
|
const real rsa = ris - (es_c1a-es_c1a_am) - (es_c3-es_c3_am);
|
||||||
@ -4176,10 +4207,8 @@ void TLiquidazione_app::recalc_annual(const char* att)
|
|||||||
real ven_lrd = 0.0;
|
real ven_lrd = 0.0;
|
||||||
real volaff1 = 0.0;
|
real volaff1 = 0.0;
|
||||||
real volaff2 = 0.0;
|
real volaff2 = 0.0;
|
||||||
real imp_ifs = 0.0;
|
|
||||||
real imp_af = 0.0;
|
TString4 codiva,reg,tiva;
|
||||||
real imp_va7 = 0.0;
|
|
||||||
TString16 codiva,reg,tiva;
|
|
||||||
TToken_string va7("",'!');
|
TToken_string va7("",'!');
|
||||||
|
|
||||||
const TString8 aaa(att);
|
const TString8 aaa(att);
|
||||||
@ -4217,26 +4246,25 @@ void TLiquidazione_app::recalc_annual(const char* att)
|
|||||||
reg = *_pim_codreg;
|
reg = *_pim_codreg;
|
||||||
look_iva(codiva); look_reg(reg);
|
look_iva(codiva); look_reg(reg);
|
||||||
tiva = _iva->get("S1");
|
tiva = _iva->get("S1");
|
||||||
const bool b3 = _iva->get("S2") == "B3" && atoi(_year) < 1998;
|
const tiporeg treg = (tiporeg)_reg->get_long("I0");
|
||||||
tiporeg treg = (tiporeg)_reg->get_long("I0");
|
|
||||||
const bool corrisp = _reg->get_bool("B0");
|
const bool corrisp = _reg->get_bool("B0");
|
||||||
const tipo_sospensione simp = _reg->get_bool("B1") ? (tipo_sospensione) _reg->get_int("I9") : nessuna;
|
const tipo_sospensione simp = _reg->get_bool("B1") ? (tipo_sospensione) _reg->get_int("I9") : nessuna;
|
||||||
imp_ifs = _pim->get_real("R0");
|
|
||||||
imp_af = _pim->get_real("R7");
|
|
||||||
va7 = _pim->get("S0");
|
|
||||||
imp_va7 = va7.get(0);
|
|
||||||
imp_ifs -= imp_af + imp_va7; // Toglie le autofatture e le op. VA7
|
|
||||||
|
|
||||||
if ( // ESCLUSI:
|
if ( // ESCLUSI:
|
||||||
strcmp(att,*_pim_codatt) != 0 ||
|
strcmp(att,*_pim_codatt) != 0 ||
|
||||||
treg != vendita || // non vendite
|
treg != vendita || // non vendite
|
||||||
tipocr == 4 || // cessioni beni ammortizzabili
|
tipocr == 4 || // cessioni beni ammortizzabili
|
||||||
tiva == "NS" || // non soggetti
|
tiva == "NS" || // non soggetti
|
||||||
b3 || // bi tre
|
|
||||||
simp == normale ||
|
simp == normale ||
|
||||||
simp == liquidazione) // sospensione di imposta
|
simp == liquidazione) // sospensione di imposta
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
real imp_ifs = _pim->get("R0"); // Imponibile
|
||||||
|
real imp_af = _pim->get("R7"); // Autofatture
|
||||||
|
va7 = _pim->get("S0");
|
||||||
|
real imp_va7 = va7.get(0); // operazioni VA7
|
||||||
|
imp_ifs -= imp_af + imp_va7; // Toglie le autofatture e le op. VA7
|
||||||
|
|
||||||
if (corrisp)
|
if (corrisp)
|
||||||
{
|
{
|
||||||
imp_ifs += _pim->get_real("R5"); // Se corrisp. aggiunge le FS
|
imp_ifs += _pim->get_real("R5"); // Se corrisp. aggiunge le FS
|
||||||
@ -4314,3 +4342,4 @@ void TLiquidazione_app::recalc_annual(const char* att)
|
|||||||
_pla->put("S1", volaff2.string());
|
_pla->put("S1", volaff2.string());
|
||||||
_pla->rewrite();
|
_pla->rewrite();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -507,7 +507,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
|
|||||||
real autodafe, autodafe_iva, art40, art40_iva;
|
real autodafe, autodafe_iva, art40, art40_iva;
|
||||||
real diffimp, diffiva, diffincimp, diffinciva;
|
real diffimp, diffiva, diffincimp, diffinciva;
|
||||||
real diffimp_acq, diffiva_acq, diffincimp_acq, diffinciva_acq;
|
real diffimp_acq, diffiva_acq, diffincimp_acq, diffinciva_acq;
|
||||||
bool skip_acq = atts.items() == 1 && _mixed;
|
const bool skip_acq = atts.items() == 1 && _mixed;
|
||||||
|
|
||||||
// descrittore riga autodafe'
|
// descrittore riga autodafe'
|
||||||
_DescrItem* ads = NULL;
|
_DescrItem* ads = NULL;
|
||||||
@ -534,7 +534,6 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
|
|||||||
// aggiunti alla fine del ciclo, scorrendo tutte le righe generate.
|
// aggiunti alla fine del ciclo, scorrendo tutte le righe generate.
|
||||||
TAssoc_array corr_ann;
|
TAssoc_array corr_ann;
|
||||||
_CorrItem cx;
|
_CorrItem cx;
|
||||||
bool is_key;
|
|
||||||
|
|
||||||
FOR_EACH_TOKEN(atts, tmpatt)
|
FOR_EACH_TOKEN(atts, tmpatt)
|
||||||
{
|
{
|
||||||
@ -547,6 +546,10 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
|
|||||||
// compute
|
// compute
|
||||||
const TString80 codtab = tab->get("CODTAB");
|
const TString80 codtab = tab->get("CODTAB");
|
||||||
const TString4 anno = codtab.mid(0,4);
|
const TString4 anno = codtab.mid(0,4);
|
||||||
|
|
||||||
|
if (anno != _year)
|
||||||
|
break; // 27-02-2014 finiamo con l'anno sbagliato!
|
||||||
|
|
||||||
const TString8 activity= codtab.mid(4,6);
|
const TString8 activity= codtab.mid(4,6);
|
||||||
const int mese = atoi(codtab.mid(13,2));
|
const int mese = atoi(codtab.mid(13,2));
|
||||||
const int tipodet = atoi(codtab.mid(20,1));
|
const int tipodet = atoi(codtab.mid(20,1));
|
||||||
@ -588,29 +591,25 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
|
|||||||
diffincimp_acq = tab->get_real("R32");
|
diffincimp_acq = tab->get_real("R32");
|
||||||
diffinciva_acq = tab->get_real("R33");
|
diffinciva_acq = tab->get_real("R33");
|
||||||
|
|
||||||
const bool is_rit= tipodet != 0 && month == 13 && rit_imp != 0.0; //Se fattura in ritardo con tipo detr. != 0 e si sta calcolando l'annuale
|
const bool is_rit= tipodet != 0 && month == 13 && !rit_imp.is_zero(); //Se fattura in ritardo con tipo detr. != 0 e si sta calcolando l'annuale
|
||||||
const tipo_sospensione sosp_imp = _reg->get_bool("B1") ? (tipo_sospensione) _reg->get_int("I9") : nessuna;
|
const tipo_sospensione sosp_imp = _reg->get_bool("B1") ? (tipo_sospensione) _reg->get_int("I9") : nessuna;
|
||||||
issosp |= (sosp_imp != nessuna); // Setta il flag di presenza registri in sospensione (qualsiasi tipo: normale, vol_affari, liquidazione)
|
issosp |= (sosp_imp != nessuna); // Setta il flag di presenza registri in sospensione (qualsiasi tipo: normale, vol_affari, liquidazione)
|
||||||
|
|
||||||
// ACHTUNG! Corrispettivi da ventileer possono ventilare
|
// ACHTUNG! Corrispettivi da ventileer possono ventilare ad un altro codiva; in tal caso si scrive quello
|
||||||
// ad un altro codiva; in tal caso si scrive quello
|
|
||||||
if (corrisp && other.full())
|
if (corrisp && other.full())
|
||||||
{
|
{
|
||||||
look_iva(other);
|
look_iva(other);
|
||||||
codiva = other;
|
codiva = other;
|
||||||
}
|
}
|
||||||
// se e' corrispettivo da ventilare non
|
// se e' corrispettivo da ventilare non scrivo un cannolo ripieno visto che e' stato ventilato
|
||||||
// scrivo un cannolo ripieno visto che e' stato ventilato
|
|
||||||
if (tipomov == vendita && tipoiva == "VE" && !describe_pis)
|
if (tipomov == vendita && tipoiva == "VE" && !describe_pis)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// se e' il dettaglio di una attivita' mista non stampa
|
// se e' il dettaglio di una attivita' mista non stampa gli acquisti, il perche' losalamadonna
|
||||||
// gli acquisti, il perche' losalamadonna
|
|
||||||
if (tipomov == acquisto && skip_acq)
|
if (tipomov == acquisto && skip_acq)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// questi non vanno in liquidazione, i totali sono
|
// questi non vanno in liquidazione, i totali sono gia' calcolati altrove
|
||||||
// gia' calcolati altrove
|
|
||||||
if ((tipodet == 1 || tipodet == 3 || tipodet == 9) && !is_rit)
|
if ((tipodet == 1 || tipodet == 3 || tipodet == 9) && !is_rit)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -631,23 +630,23 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
|
|||||||
tab->get_real("R33").is_zero())
|
tab->get_real("R33").is_zero())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (activity == att && is_month_plain(mese) && _year == anno)
|
if (activity == att && is_month_plain(mese) /*&& _year == anno*/) // commentato 27-02-2015
|
||||||
{
|
{
|
||||||
// vedi se c'e' gia' un item corrispondente
|
// vedi se c'e' gia' un item corrispondente
|
||||||
int i;
|
int i;
|
||||||
for(i = last+1; i < _descr_arr.items(); i++)
|
for(i = last+1; i < _descr_arr.items(); i++)
|
||||||
{
|
{
|
||||||
_DescrItem* wd = (_DescrItem*)&_descr_arr[i];
|
_DescrItem& wd = (_DescrItem&)_descr_arr[i];
|
||||||
if (wd->_flags == PIM_PIS && wd->_s0 == ref && wd->_s1 == codiva)
|
if (wd._flags == PIM_PIS && wd._s0 == ref && wd._s1 == codiva)
|
||||||
{
|
{
|
||||||
d = wd;
|
d = &wd;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (wd->_flags == TOT_ROW)
|
if (wd._flags == TOT_ROW)
|
||||||
break;
|
break;
|
||||||
if (wd->_flags == PIM_PIS &&
|
if (wd._flags == PIM_PIS &&
|
||||||
wd->_s0 == ref &&
|
wd._s0 == ref &&
|
||||||
wd->_s1 > codiva)
|
wd._s1 > codiva)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (d == NULL)
|
if (d == NULL)
|
||||||
@ -691,7 +690,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
|
|||||||
}
|
}
|
||||||
else // vendita
|
else // vendita
|
||||||
{
|
{
|
||||||
is_key = corr_ann.is_key(codiva);
|
const bool is_key = corr_ann.is_key(codiva);
|
||||||
cx._totale = 0;
|
cx._totale = 0;
|
||||||
_CorrItem& ca = is_key ? (_CorrItem&) corr_ann[codiva] : cx;
|
_CorrItem& ca = is_key ? (_CorrItem&) corr_ann[codiva] : cx;
|
||||||
if (sosp_imp != vol_affari)
|
if (sosp_imp != vol_affari)
|
||||||
@ -861,17 +860,17 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
|
|||||||
int j;
|
int j;
|
||||||
for (j = totpos + 1; j < _descr_arr.items(); j++)
|
for (j = totpos + 1; j < _descr_arr.items(); j++)
|
||||||
{
|
{
|
||||||
_DescrItem* wd = (_DescrItem*)&_descr_arr[j];
|
_DescrItem& wd = (_DescrItem&)_descr_arr[j];
|
||||||
const bool found = wd->_flags == id && wd->_s0 == ref;
|
const bool found = wd._flags == id && wd._s0 == ref;
|
||||||
|
|
||||||
if (found && wd->_s1 == codiva)
|
if (found && wd._s1 == codiva)
|
||||||
{
|
{
|
||||||
d = wd;
|
d = &wd;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (wd->_flags == TOT_ROW_DI)
|
if (wd._flags == TOT_ROW_DI)
|
||||||
break;
|
break;
|
||||||
if (found && wd->_s1 > codiva)
|
if (found && wd._s1 > codiva)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (d == NULL)
|
if (d == NULL)
|
||||||
@ -1153,19 +1152,13 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
|
|||||||
|
|
||||||
// calcola nuovo prorata per ogni attivita' (miste: 1+2)
|
// calcola nuovo prorata per ogni attivita' (miste: 1+2)
|
||||||
real pr;
|
real pr;
|
||||||
if (atoi(_year) > 1997) // Calcolo dal 1998 in poi
|
const real rsa = ris - (e3-e5) - (e4-e6);
|
||||||
|
if (!rsa.is_zero())
|
||||||
{
|
{
|
||||||
const real rsa = ris - (e3-e5) - (e4-e6);
|
|
||||||
const real rsn = rsa - e1;
|
const real rsn = rsa - e1;
|
||||||
if (!rsa.is_zero())
|
pr = CENTO - (rsn * CENTO / rsa); // Percentuale di indetraibilita: reciproco della percentuale di detraibilita'
|
||||||
pr = CENTO - (rsn * CENTO / rsa); // Percentuale di indetraibilita: reciproco della percentuale di detraibilita'
|
pr.round(0);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!ris.is_zero())
|
|
||||||
pr = e1 * CENTO / ris;
|
|
||||||
}
|
|
||||||
pr.round(0);
|
|
||||||
|
|
||||||
real co = 0.0;
|
real co = 0.0;
|
||||||
real topay = 0.0;
|
real topay = 0.0;
|
||||||
@ -1236,11 +1229,6 @@ void TLiquidazione_app::describe_liq(int month, const char* codatts, _DescrItem*
|
|||||||
d->_r29 = _lim->get_real("R29"); // fdiffinc_iva_ven
|
d->_r29 = _lim->get_real("R29"); // fdiffinc_iva_ven
|
||||||
d->_r33 = _lim->get_real("R33"); // fdiffinc_iva_acq
|
d->_r33 = _lim->get_real("R33"); // fdiffinc_iva_acq
|
||||||
|
|
||||||
/* Dal 1998 in poi il conguaglio prorata non va stampato, ma conglobato nell'iva acquisti
|
|
||||||
if (atoi(_year) <= 1997)
|
|
||||||
d->_r10 = _lim->get_real("R7"); // totale conguaglio prorata
|
|
||||||
*/
|
|
||||||
|
|
||||||
TToken_string tt(80);
|
TToken_string tt(80);
|
||||||
tt.add(_lam->get_real("R0").string()); // IVA Vendite
|
tt.add(_lam->get_real("R0").string()); // IVA Vendite
|
||||||
tt.add(_lam->get_real("R1").string()); // IVA Acquisti
|
tt.add(_lam->get_real("R1").string()); // IVA Acquisti
|
||||||
@ -1479,10 +1467,7 @@ void TLiquidazione_app::set_att(_DescrItem& d)
|
|||||||
|
|
||||||
if (d._f1 == 13)
|
if (d._f1 == 13)
|
||||||
{
|
{
|
||||||
if (d._s4 == "T" && !(d._f2)) // trimestrale e non benzinaro
|
tim_title << format(FR(": Riepilogo Annuale %s"),(const char*)_year);
|
||||||
tim_title << format(FR(": Riepilogo Annuale %s"),(const char*)_year);
|
|
||||||
else
|
|
||||||
tim_title << format(FR(": Dichiarazione Annuale %s"),(const char*)_year);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1634,6 +1619,7 @@ void TLiquidazione_app::set_liqacc_1999(_DescrItem& d)
|
|||||||
|
|
||||||
int TLiquidazione_app::calc_inc_diff(int tipoiva, real& imponibile_diff, real& imposta_diff, real& imponibile_xcas, real& imposta_xcas) const
|
int TLiquidazione_app::calc_inc_diff(int tipoiva, real& imponibile_diff, real& imposta_diff, real& imponibile_xcas, real& imposta_xcas) const
|
||||||
{
|
{
|
||||||
|
CHECKD(tipoiva == 1 || tipoiva == 2, "Bad tipo iva:", tipoiva);
|
||||||
int flag = 0;
|
int flag = 0;
|
||||||
|
|
||||||
imponibile_diff = imposta_diff = imponibile_xcas = imposta_xcas = ZERO;
|
imponibile_diff = imposta_diff = imponibile_xcas = imposta_xcas = ZERO;
|
||||||
@ -1649,10 +1635,14 @@ int TLiquidazione_app::calc_inc_diff(int tipoiva, real& imponibile_diff, real& i
|
|||||||
for (bool ok = id.move_first(); ok; ok = id.move_next())
|
for (bool ok = id.move_first(); ok; ok = id.move_next())
|
||||||
{
|
{
|
||||||
const real iva = rec.get_real(RMI_IMPOSTA);
|
const real iva = rec.get_real(RMI_IMPOSTA);
|
||||||
if (!iva.is_zero())
|
const real imp = rec.get_real(RMI_IMPONIBILE);
|
||||||
|
if (!iva.is_zero() || !imp.is_zero())
|
||||||
{
|
{
|
||||||
|
#ifdef DBG
|
||||||
|
if (iva.is_zero() && !imp.is_zero())
|
||||||
|
int cazzonga = 1;
|
||||||
|
#endif
|
||||||
const int tipodiff = rec.get_int("TIPODIFF");
|
const int tipodiff = rec.get_int("TIPODIFF");
|
||||||
const real imp = rec.get_real(RMI_IMPONIBILE);
|
|
||||||
switch (tipodiff)
|
switch (tipodiff)
|
||||||
{
|
{
|
||||||
case 1: imponibile_diff += imp; imposta_diff += iva; break;
|
case 1: imponibile_diff += imp; imposta_diff += iva; break;
|
||||||
|
@ -134,9 +134,29 @@ bool gestione_IVAxCassa(const TDate& data_mov, long firm)
|
|||||||
return yes;
|
return yes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool mov_has_imposte(const TRectype& mov)
|
||||||
|
{
|
||||||
|
const char tipocf = mov.get_char(MOV_TIPO);
|
||||||
|
if (tipocf == 'C' || tipocf == 'F')
|
||||||
|
{
|
||||||
|
tipo_movimento tm = (tipo_movimento)mov.get_int(MOV_TIPOMOV);
|
||||||
|
if (tm == tm_nessuno)
|
||||||
|
{
|
||||||
|
const TString& tipodoc = mov.get(MOV_TIPODOC);
|
||||||
|
if (tipodoc == "FV" || tipodoc == "FA")
|
||||||
|
tm = tm_fattura; else
|
||||||
|
if (tipodoc == "NC")
|
||||||
|
tm = tm_nota_credito;
|
||||||
|
}
|
||||||
|
return tm == tm_fattura || tm == tm_nota_credito;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool is_split_payment(const TRectype& mov)
|
bool is_split_payment(const TRectype& mov)
|
||||||
{
|
{
|
||||||
if (mov.get_char(MOV_TIPO) == 'C' && mov.get_int(MOV_ANNOIVA) >= 2015 && mov.get_real(MOV_RITFIS).is_zero())
|
if (mov_has_imposte(mov) && mov.get_int(MOV_ANNOIVA) >= 2015 && mov.get_real(MOV_RITFIS).is_zero())
|
||||||
{
|
{
|
||||||
const TRectype& clifo = cache().get_rec(LF_CLIFO, "C", mov.get(MOV_CODCF));
|
const TRectype& clifo = cache().get_rec(LF_CLIFO, "C", mov.get(MOV_CODCF));
|
||||||
if (clifo.get_bool(CLI_SPLITPAY)) // Ente pubblico con split payment
|
if (clifo.get_bool(CLI_SPLITPAY)) // Ente pubblico con split payment
|
||||||
@ -150,21 +170,25 @@ bool is_split_payment(const TRectype& mov)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool is_IVA_diff(const TRectype& mov)
|
||||||
|
{
|
||||||
|
if (!mov.get_bool(MOV_LIQDIFF) || mov.get_bool(MOV_IVAXCASSA))
|
||||||
|
return false;
|
||||||
|
return mov_has_imposte(mov) && !is_split_payment(mov);
|
||||||
|
}
|
||||||
|
|
||||||
bool is_IVAxCassa(const TRectype& mov)
|
bool is_IVAxCassa(const TRectype& mov)
|
||||||
{
|
{
|
||||||
if (mov.get_bool(MOV_LIQDIFF) || !mov.get_bool(MOV_IVAXCASSA) || mov.get_char(MOV_TIPO) < 'C')
|
if (mov.get_bool(MOV_LIQDIFF) || !mov.get_bool(MOV_IVAXCASSA))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
tipo_movimento tm = (tipo_movimento)mov.get_int(MOV_TIPOMOV);
|
if (!mov_has_imposte(mov))
|
||||||
if (tm == tm_nessuno)
|
return false;
|
||||||
{
|
|
||||||
const TString& tipodoc = mov.get(MOV_TIPODOC);
|
const TDate data_reg = mov.get(MOV_DATAREG);
|
||||||
if (tipodoc == "FV" || tipodoc == "FA")
|
const TDate data_doc = mov.get(MOV_DATADOC);
|
||||||
tm = tm_fattura; else
|
const TDate data_rif = data_doc.ok() && data_doc < data_reg ? data_doc : data_reg;
|
||||||
if (tipodoc == "NC")
|
if (!gestione_IVAxCassa(data_rif))
|
||||||
tm = tm_nota_credito;
|
|
||||||
}
|
|
||||||
if (tm != tm_fattura && tm != tm_nota_credito)
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
const TRectype& clifo = cache().get_rec(LF_CLIFO, mov.get(MOV_TIPO), mov.get(MOV_CODCF));
|
const TRectype& clifo = cache().get_rec(LF_CLIFO, mov.get(MOV_TIPO), mov.get(MOV_CODCF));
|
||||||
@ -186,7 +210,7 @@ bool is_IVAxCassa(const TRectype& mov)
|
|||||||
if (paiv.full())
|
if (paiv.full())
|
||||||
alleg = 0; // Falso allarme: NON è un privato avendo partita IVA
|
alleg = 0; // Falso allarme: NON è un privato avendo partita IVA
|
||||||
}
|
}
|
||||||
if (alleg == 7 || (clifo.get_bool(CLI_SPLITPAY) && is_split_payment(mov)))
|
if ((alleg == 7 || alleg == 4) && is_split_payment(mov))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -196,10 +220,7 @@ bool is_IVAxCassa(const TRectype& mov)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const TDate data_reg = mov.get(MOV_DATAREG);
|
return true;
|
||||||
const TDate data_doc = mov.get(MOV_DATADOC);
|
|
||||||
const TDate data_rif = data_doc.ok() && data_doc < data_reg ? data_doc : data_reg;
|
|
||||||
return gestione_IVAxCassa(data_rif);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -159,6 +159,7 @@ int get_tipodet_from_rmi(const TRectype& rmi, const TRectype& mv, real& percind,
|
|||||||
|
|
||||||
bool gestione_IVAxCassa(const TDate& data, long firm = 0);
|
bool gestione_IVAxCassa(const TDate& data, long firm = 0);
|
||||||
bool is_split_payment(const TRectype& mov);
|
bool is_split_payment(const TRectype& mov);
|
||||||
|
bool is_IVA_diff(const TRectype& mov);
|
||||||
bool is_IVAxCassa(const TRectype& mov);
|
bool is_IVAxCassa(const TRectype& mov);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -792,20 +792,25 @@ int TRiga_partite::ultima_ratapagata() const
|
|||||||
// Certified 100%
|
// Certified 100%
|
||||||
tipo_movimento TRiga_partite::tipo() const
|
tipo_movimento TRiga_partite::tipo() const
|
||||||
{
|
{
|
||||||
tipo_movimento tm = (tipo_movimento)(get_int(PART_TIPOMOV));
|
tipo_movimento tm = (tipo_movimento)get_int(PART_TIPOMOV);
|
||||||
|
|
||||||
if (tm == tm_nessuno)
|
if (tm == tm_nessuno)
|
||||||
{
|
{
|
||||||
// Tento salvataggioin extremis
|
// Tento salvataggioin extremis
|
||||||
const int nriga = get_int(PART_NRIGA);
|
const int nriga = get_int(PART_NRIGA);
|
||||||
if (nriga == 1 && get_date(PART_DATADOC).ok())
|
if (nriga != TPartita::UNASSIGNED)
|
||||||
tm = tm_fattura; else
|
{
|
||||||
if (nriga > 1 && get_date(PART_DATAPAG).ok())
|
if (get_date(PART_DATAPAG).ok())
|
||||||
tm = tm_pagamento;
|
tm = tm_pagamento; else
|
||||||
#ifdef DBG
|
if (get_date(PART_DATADOC).ok())
|
||||||
if (tm == tm_nessuno && nriga != TPartita::UNASSIGNED)
|
tm = tm_fattura;
|
||||||
yesnofatal_box("Riga partite con un tipo losco.");
|
#ifdef DBG
|
||||||
#endif
|
else
|
||||||
|
yesnofatal_box("Riga partite %c%ld %d/%s : %d con un tipo losco.",
|
||||||
|
get_char(PART_TIPOCF), get_long(PART_SOTTOCONTO),
|
||||||
|
get_int(PART_ANNO), (const char*)get(PART_NUMPART), nriga);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return tm;
|
return tm;
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
29
|
29
|
||||||
0
|
0
|
||||||
$scad|0|0|218|0|Scadenze|NPART*2||
|
$scad|0|0|224|0|Scadenze|NPART*2||
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
29
|
29
|
||||||
29
|
30
|
||||||
ANNO|2|4|0|Anno
|
ANNO|2|4|0|Anno
|
||||||
NUMPART|1|7|0|Numero partita
|
NUMPART|1|7|0|Numero partita
|
||||||
NRIGA|2|4|0|Numero riga
|
NRIGA|2|4|0|Numero riga
|
||||||
@ -27,6 +27,7 @@ CODABI|10|5|0|Codice ABI
|
|||||||
CODCAB|10|5|0|Codice CAB
|
CODCAB|10|5|0|Codice CAB
|
||||||
CODAG|1|5|0|Codice agente
|
CODAG|1|5|0|Codice agente
|
||||||
BLOCCATA|8|1|0|Scadenza non pagabile (bloccata) solo acquisti
|
BLOCCATA|8|1|0|Scadenza non pagabile (bloccata) solo acquisti
|
||||||
|
MOTIVO|1|6|0|Motivo del blocco
|
||||||
TNRIGA|2|4|0|Numero temporaneo di riga partita
|
TNRIGA|2|4|0|Numero temporaneo di riga partita
|
||||||
TNRATA|2|4|0|Numero temporaneo di rata
|
TNRATA|2|4|0|Numero temporaneo di rata
|
||||||
2
|
2
|
||||||
|
Loading…
x
Reference in New Issue
Block a user