git-svn-id: svn://10.65.10.50/branches/R_10_00@23187 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
29193933ef
commit
c950212962
@ -1,5 +1,6 @@
|
||||
#include "cg2103.h"
|
||||
|
||||
#include <config.h>
|
||||
#include <diction.h>
|
||||
#include <recarray.h>
|
||||
#include <tabutil.h>
|
||||
@ -77,18 +78,20 @@ TBill& TCausale::bill(int num, TBill& conto) const
|
||||
return conto;
|
||||
}
|
||||
|
||||
const char* TCausale::cod_desc_agg(int num) const
|
||||
{
|
||||
const TRectype* rec = row(num);
|
||||
if (rec)
|
||||
return rec->get(RCA_CODDESC);
|
||||
return ""; // ho problemi con ? :
|
||||
}
|
||||
|
||||
const char* TCausale::desc_agg(int num) const
|
||||
{
|
||||
const char* deag = "";
|
||||
|
||||
const TRectype* rec = row(num);
|
||||
if (rec != NULL)
|
||||
{
|
||||
const TString& cod = rec->get(RCA_CODDESC);
|
||||
deag = cache().get("%DPN", cod, "S0");
|
||||
}
|
||||
|
||||
return deag;
|
||||
const char* cod = cod_desc_agg(num);
|
||||
if (cod && *cod)
|
||||
return cache().get("%DPN", cod, "S0");
|
||||
return ""; // ho problemi con ? :
|
||||
}
|
||||
|
||||
const char* TCausale::descrizione() const
|
||||
|
@ -27,6 +27,7 @@ public:
|
||||
|
||||
const char* codice() const;
|
||||
const char* descrizione() const;
|
||||
const char* cod_desc_agg(int num) const;
|
||||
const char* desc_agg(int num) const;
|
||||
|
||||
bool data_doc() const;
|
||||
|
@ -33,28 +33,27 @@ public:
|
||||
|
||||
const TString& TMastrini_record::get_str(const char* fieldname) const
|
||||
{
|
||||
if (strcmp(fieldname, RMV_DESCR) == 0)
|
||||
if (xvt_str_same(fieldname, RMV_DESCR))
|
||||
{
|
||||
const int g = atoi(TRectype::get_str(RMV_GRUPPO));
|
||||
const int c = atoi(TRectype::get_str(RMV_CONTO));
|
||||
const long s = atol(TRectype::get_str(RMV_SOTTOCONTO));
|
||||
((TBill&)_bill).set(g, c, s);
|
||||
const TString& descr = _bill.descrizione();
|
||||
return descr;
|
||||
return _bill.descrizione();
|
||||
}
|
||||
return TRectype::get_str(fieldname);
|
||||
}
|
||||
|
||||
int TMastrini_record::length(const char* fieldname) const
|
||||
{
|
||||
if (strcmp(fieldname, RMV_DESCR) == 0)
|
||||
if (xvt_str_same(fieldname, RMV_DESCR))
|
||||
return 50;
|
||||
return TRectype::length(fieldname);
|
||||
}
|
||||
|
||||
TFieldtypes TMastrini_record::type(const char* fieldname) const
|
||||
{
|
||||
if (strcmp(fieldname, RMV_DESCR) == 0)
|
||||
if (xvt_str_same(fieldname, RMV_DESCR))
|
||||
return _alfafld;
|
||||
return TRectype::type(fieldname);
|
||||
}
|
||||
@ -277,8 +276,7 @@ bool TMastrini_application::sottoc_handler_ini(TMask_field& f, KEY key)
|
||||
char tipo = id == F_SOTTOCINI_CLIENTE ? 'C' : 'F';
|
||||
if (sottoconto != 0)
|
||||
{
|
||||
TString16 key;
|
||||
key.format("%c|%ld", tipo, sottoconto);
|
||||
TString8 key; key.format("%c|%ld", tipo, sottoconto);
|
||||
const TRectype & clifo = cache().get(LF_CLIFO, key);
|
||||
if (clifo.empty())
|
||||
return f.warning_box(TR("Anagrafica inesistente"));
|
||||
@ -533,10 +531,7 @@ bool TMastrini_application::memorizza_handler(TMask_field& f, KEY k)
|
||||
|
||||
bool TMastrini_application::scelte_notify(TSheet_field& s, int r, KEY k)
|
||||
{
|
||||
bool ok = TRUE;
|
||||
if (k == K_INS)
|
||||
ok = FALSE;
|
||||
return ok;
|
||||
return k != K_INS;
|
||||
}
|
||||
|
||||
int TMastrini_application::date2esc(const TDate& d)
|
||||
@ -2124,10 +2119,8 @@ print_action TMastrini_application::postprocess_print(int file, int counter)
|
||||
if (file == LF_SALDI)
|
||||
{
|
||||
reset_print();
|
||||
// stampa_totali_commessa();
|
||||
print_one(file);
|
||||
|
||||
_msk->reset(-9);
|
||||
//_msk->reset(-9); // commentato 25-03-2015
|
||||
}
|
||||
|
||||
return NEXT_PAGE;
|
||||
@ -2240,7 +2233,7 @@ bool TMastrini_application::set_print(int m)
|
||||
KEY tasto = K_ENTER;
|
||||
while (tasto == K_ENTER)
|
||||
{
|
||||
_puoi_stampare = TRUE;
|
||||
_puoi_stampare = true;
|
||||
// Controlla se esistono impostazioni di stampa in coda
|
||||
if (sheet2mask())
|
||||
{
|
||||
@ -2269,7 +2262,7 @@ bool TMastrini_application::set_print(int m)
|
||||
else
|
||||
_real_picture = "####.###.###.###";
|
||||
set_real_picture(_real_picture);
|
||||
set_magic_currency(TRUE);
|
||||
set_magic_currency(true);
|
||||
|
||||
_codice_ditta = get_firm();
|
||||
_annomsk = _msk->get_int(F_ANNO);
|
||||
@ -2286,7 +2279,7 @@ bool TMastrini_application::set_print(int m)
|
||||
_stampa_cont = !_msk->get_bool(F_NOT_STAMPA_CONT);
|
||||
_stampanum = _msk->get_int(F_STAMPANUM);
|
||||
_stampa_mov_prov = _msk->get_bool(F_STAMPAMOVPROV);
|
||||
_selez_mastrini = _msk->get_int(F_SELEZ_STAMPA);
|
||||
_selez_mastrini = _msk->get_int(F_SELEZ_STAMPA);
|
||||
|
||||
_numcarat = _msk->get_int(F_NUMCARAT);
|
||||
_stampa_saldo_des = _numcarat==2 ? _msk->get_int(F_SALDO_DES) : 0;
|
||||
@ -3590,9 +3583,6 @@ const char* TMastrini_application::descrizione_classe(char sezione, char lettera
|
||||
|
||||
const char* TMastrini_application::descrizione_gruppo()
|
||||
{
|
||||
// TString16 key;
|
||||
// key.format("%d", _gruppo);
|
||||
// return cache().get(LF_PCON, key, PCN_DESCR);
|
||||
return cache().get(LF_PCON, _gruppo, PCN_DESCR);
|
||||
}
|
||||
|
||||
@ -3600,17 +3590,13 @@ const char* TMastrini_application::descrizione_gruppo()
|
||||
|
||||
const char* TMastrini_application::descrizione_conto()
|
||||
{
|
||||
TString8 key;
|
||||
key.format("%d|%d", _gruppo, _conto);
|
||||
|
||||
TString8 key; key.format("%d|%d", _gruppo, _conto);
|
||||
return cache().get(LF_PCON, key, PCN_DESCR);
|
||||
}
|
||||
|
||||
const char* TMastrini_application::descrizione_sottoconto()
|
||||
{
|
||||
TString16 key;
|
||||
key.format("%d|%d|%ld", _gruppo, _conto, _sottoc);
|
||||
|
||||
TString16 key; key.format("%d|%d|%ld", _gruppo, _conto, _sottoc);
|
||||
return cache().get(LF_PCON, key, PCN_DESCR);
|
||||
}
|
||||
|
||||
|
@ -511,8 +511,6 @@ BEGIN
|
||||
MODULE NP
|
||||
END
|
||||
|
||||
|
||||
|
||||
BUTTON F_MEMORIZZA 18 2
|
||||
BEGIN
|
||||
PROMPT -11 -1 "~Memorizza scelte"
|
||||
|
@ -3,6 +3,7 @@
|
||||
#include "cg3.h"
|
||||
#include "cglib02.h"
|
||||
#include "cg3600.h"
|
||||
#include "cg3601.h"
|
||||
|
||||
#include <applicat.h>
|
||||
#include <colmask.h>
|
||||
@ -2273,8 +2274,9 @@ protected: // TMask
|
||||
|
||||
static bool link_handler(TMask_field& f, KEY k);
|
||||
static bool new_handler(TMask_field& f, KEY k);
|
||||
static bool edit_handler(TMask_field& f, KEY k);
|
||||
//static bool edit_handler(TMask_field& f, KEY k);
|
||||
static bool export_handler(TMask_field& f, KEY k);
|
||||
static bool saldac_handler(TMask_field& f, KEY k);
|
||||
|
||||
public:
|
||||
TMastrini_grid& grid() { CHECK(_grid, "What's grid?"); return *_grid; }
|
||||
@ -2289,8 +2291,9 @@ TGrid_mask::TGrid_mask()
|
||||
read_mask("cg3600b", 0, 0);
|
||||
set_handler(DLG_LINK, link_handler);
|
||||
set_handler(DLG_NEWREC, new_handler);
|
||||
set_handler(DLG_EDIT, edit_handler);
|
||||
//set_handler(DLG_EDIT, edit_handler);
|
||||
set_handler(DLG_EXPORT, export_handler);
|
||||
set_handler(DLG_USER, saldac_handler); // implemented in cg3601.cpp
|
||||
|
||||
const bool show_cms = main_app().has_module(CMAUT) || main_app().has_module(CAAUT);
|
||||
if (!show_cms)
|
||||
@ -2336,6 +2339,7 @@ bool TGrid_mask::new_handler(TMask_field& f, KEY k)
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Useless
|
||||
bool TGrid_mask::edit_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
bool ok = true;
|
||||
@ -2352,7 +2356,7 @@ bool TGrid_mask::edit_handler(TMask_field& f, KEY k)
|
||||
ok = export_handler(f, k); // Se non parte Excel salvo altrove
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
}*/
|
||||
|
||||
bool TGrid_mask::export_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
@ -2372,6 +2376,16 @@ bool TGrid_mask::export_handler(TMask_field& f, KEY k)
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TGrid_mask::saldac_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_SPACE)
|
||||
{
|
||||
TBill zio; zio.get(f.mask(), F_GRUPPO, F_CONTO, F_SOTTOCONTO);
|
||||
popup_games(zio);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TGrid_mask::on_key(KEY k)
|
||||
{
|
||||
|
@ -14,16 +14,10 @@ BEGIN
|
||||
PICTURE TOOL_NEWREC
|
||||
END
|
||||
|
||||
BUTTON DLG_EDIT 10 2
|
||||
BEGIN
|
||||
PROMPT 3 1 "E~xcel"
|
||||
PICTURE TOOL_EXCEL
|
||||
END
|
||||
|
||||
BUTTON DLG_EXPORT 10 2
|
||||
BEGIN
|
||||
PROMPT 4 1 "~Esporta"
|
||||
PICTURE TOOL_EXPORT
|
||||
PICTURE TOOL_EXCEL
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
@ -61,22 +55,28 @@ END
|
||||
|
||||
NUMBER F_ESERCIZIO 4
|
||||
BEGIN
|
||||
PROMPT 1 1 "Cod. esercizio "
|
||||
PROMPT 1 1 "Esercizio "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_DADATA
|
||||
BEGIN
|
||||
PROMPT 25 1 "Dalla data "
|
||||
PROMPT 21 1 "Dal "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_ADATA
|
||||
BEGIN
|
||||
PROMPT 54 1 "Alla data "
|
||||
PROMPT 38 1 "Al "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BUTTON DLG_USER 10
|
||||
BEGIN
|
||||
PROMPT 64 1 "Partite"
|
||||
MODULE sc
|
||||
END
|
||||
|
||||
SPREADSHEET F_MASTRINI 0 -6
|
||||
BEGIN
|
||||
PROMPT 1 2 "Mastrini"
|
||||
|
141
cg/cg3600s.uml
Normal file
141
cg/cg3600s.uml
Normal file
@ -0,0 +1,141 @@
|
||||
#include "../sc/sc0200b.h"
|
||||
|
||||
TOOLBAR "" 0 0 0 2
|
||||
#include <stdbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Partite" 0 0 0 0
|
||||
|
||||
LIST F_TIPO 1 10
|
||||
BEGIN
|
||||
PROMPT 1 0 "Tipo conto "
|
||||
ITEM "C|Cliente"
|
||||
MESSAGE HIDE,1@|SHOW,2@|HIDE,3@
|
||||
ITEM "F|Fornitore"
|
||||
MESSAGE HIDE,1@|HIDE,2@|SHOW,3@
|
||||
ITEM "|Conto"
|
||||
MESSAGE SHOW,1@|HIDE,2@|HIDE,3@
|
||||
FLAGS "DG"
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPO 3
|
||||
BEGIN
|
||||
PROMPT 27 0 "Gruppo "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_CONTO 3
|
||||
BEGIN
|
||||
PROMPT 41 0 "Conto "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_SOTTOCONTO 6
|
||||
BEGIN
|
||||
PROMPT 54 0 "Sottoconto "
|
||||
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||
INPUT GRUPPO F_GRUPPO
|
||||
INPUT CONTO F_CONTO
|
||||
INPUT SOTTOCONTO F_SOTTOCONTO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_GRUPPO GRUPPO
|
||||
OUTPUT F_CONTO CONTO
|
||||
OUTPUT F_SOTTOCONTO SOTTOCONTO
|
||||
OUTPUT F_DESCR DESCR
|
||||
GROUP 1
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_CLIENTE 6
|
||||
BEGIN
|
||||
PROMPT 54 0 "Cliente "
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF "C"
|
||||
INPUT CODCF F_CLIENTE
|
||||
DISPLAY "Cliente" CODCF
|
||||
DISPLAY "Descrizione@50" RAGSOC
|
||||
OUTPUT F_CLIENTE CODCF
|
||||
OUTPUT F_DESCRCLI RAGSOC
|
||||
ADD RUN cg0 -1 C
|
||||
GROUP 2
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_FORNITORE 6
|
||||
BEGIN
|
||||
PROMPT 54 0 "Fornitore "
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF "F"
|
||||
INPUT CODCF F_FORNITORE
|
||||
DISPLAY "Fornitore" CODCF
|
||||
DISPLAY "Descrizione@50" RAGSOC
|
||||
OUTPUT F_FORNITORE CODCF
|
||||
OUTPUT F_DESCRFOR RAGSOC
|
||||
ADD RUN cg0 -1 F
|
||||
GROUP 3
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_DESCR 50 58
|
||||
BEGIN
|
||||
PROMPT 1 1 "Descrizione "
|
||||
GROUP 1
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_DESCRCLI 50 58
|
||||
BEGIN
|
||||
PROMPT 1 1 "Descrizione "
|
||||
GROUP 2
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_DESCRFOR 50 58
|
||||
BEGIN
|
||||
PROMPT 1 1 "Descrizione "
|
||||
GROUP 3
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
RADIOBUTTON F_TUTTE 1 38
|
||||
BEGIN
|
||||
PROMPT 1 2 "Mostra partite"
|
||||
ITEM "1|Aperte"
|
||||
ITEM "2|Chiuse"
|
||||
ITEM "3|Tutte"
|
||||
FLAGS "Z"
|
||||
END
|
||||
|
||||
STRING F_CODVAL 4
|
||||
BEGIN
|
||||
PROMPT 60 3 "Valuta "
|
||||
USE %VAL
|
||||
INPUT CODTAB F_CODVAL
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CODVAL CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
TLIST F_PARTITE -3 -1
|
||||
BEGIN
|
||||
PROMPT 0 5 ""
|
||||
DISPLAY "Partita@35" DESCR
|
||||
DISPLAY "Docum.@8" NUMDOC
|
||||
DISPLAY "Data@10R" DATADOC
|
||||
DISPLAY "Dare@15R" DARE
|
||||
DISPLAY "Avere@15R" AVERE
|
||||
DISPLAY "Abbuoni@15R" ABBUONI
|
||||
DISPLAY "Diff. Cambio@15R" DIFFCAM
|
||||
DISPLAY "Ritenute fiscali@15R" RITENUTE
|
||||
DISPLAY "Ritenute sociali@15R" RITSOC
|
||||
DISPLAY "P.N.@7R" NREG
|
||||
END
|
||||
|
||||
ENDMASK
|
134
cg/cg3601.cpp
Normal file
134
cg/cg3601.cpp
Normal file
@ -0,0 +1,134 @@
|
||||
#include <automask.h>
|
||||
#include <treectrl.h>
|
||||
#include <statbar.h>
|
||||
|
||||
#include "cgsalda3.h"
|
||||
#include "cg3601.h"
|
||||
|
||||
#include "../sc/sc0200b.h"
|
||||
|
||||
class TPartitario : public TAutomask
|
||||
{
|
||||
TPartite_array _games;
|
||||
TSolder_tree _tree;
|
||||
long _numreg;
|
||||
|
||||
protected:
|
||||
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
TPartitario(const TBill& bill);
|
||||
};
|
||||
|
||||
bool TPartitario::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_TUTTE:
|
||||
if (e == fe_init || e == fe_modify)
|
||||
{
|
||||
TBill bill;
|
||||
const char tipo = get(F_TIPO)[0];
|
||||
const short dlg = tipo == 'C' ? F_CLIENTE : (tipo == 'F' ? F_FORNITORE : F_SOTTOCONTO);
|
||||
bill.get(*this, F_GRUPPO, F_CONTO, dlg, F_TIPO, dlg+1);
|
||||
const TString& codval = get(F_CODVAL);
|
||||
const real cambio = UNO;
|
||||
const TSolder_tree_flags flags = (TSolder_tree_flags)atoi(o.get());
|
||||
_tree.set_root(_games, bill, 0, 0, codval, cambio, flags);
|
||||
tfield(F_PARTITE).set_tree(&_tree);
|
||||
_numreg = 0L;
|
||||
disable(DLG_EDIT);
|
||||
}
|
||||
break;
|
||||
case DLG_USER:
|
||||
if (e == fe_button)
|
||||
{
|
||||
TWait_cursor hourglass;
|
||||
if (_tree.expanded())
|
||||
_tree.shrink_all();
|
||||
else
|
||||
_tree.expand_all();
|
||||
tfield(F_PARTITE).win().force_update();
|
||||
}
|
||||
break;
|
||||
case F_PARTITE:
|
||||
if (e == fe_modify || e == fe_button)
|
||||
{
|
||||
_numreg = 0L;
|
||||
|
||||
TTree_field& tree = tfield(F_PARTITE);
|
||||
tree.goto_selected();
|
||||
TToken_string node; _tree.curr_id(node);
|
||||
int level = node.items();
|
||||
if (level >= 2)
|
||||
{
|
||||
TPartita& game = *_tree.partita();
|
||||
|
||||
const int nriga = node.get_int(1);
|
||||
const int nrata = node.get_int();
|
||||
int nrigp = node.get_int();
|
||||
if (nrigp <= 0 && nriga == TPartita::UNASSIGNED)
|
||||
nrigp = game.unassigned().first_row();
|
||||
|
||||
long numreg = 0;
|
||||
if (nrigp > 0 && game.esiste(nrigp))
|
||||
{
|
||||
const TRiga_partite& rigp = game.riga(nrigp);
|
||||
_numreg = rigp.get_long(PART_NREG);
|
||||
} else
|
||||
if (nriga > 0 && nriga < TPartita::UNASSIGNED && game.esiste(nriga))
|
||||
{
|
||||
TRiga_partite& riga = game.riga(nriga);
|
||||
_numreg = riga.get_long(PART_NREG);
|
||||
}
|
||||
}
|
||||
enable(DLG_EDIT, _numreg > 0L);
|
||||
}
|
||||
if (e == fe_button && _numreg > 0)
|
||||
{
|
||||
TRectype mov(LF_MOV);
|
||||
mov.put("NUMREG", _numreg);
|
||||
mov.edit();
|
||||
}
|
||||
break;
|
||||
case DLG_EDIT:
|
||||
if (e == fe_button && _numreg > 0)
|
||||
{
|
||||
TRectype mov(LF_MOV);
|
||||
mov.put("NUMREG", _numreg);
|
||||
mov.edit();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
TPartitario::TPartitario(const TBill& bill) : TAutomask("sc0200b")
|
||||
{
|
||||
WINDOW tb = toolbar();
|
||||
xvt_toolbar_remove_control(tb, DLG_NEWREC);
|
||||
xvt_toolbar_remove_control(tb, DLG_EDIT);
|
||||
|
||||
const real cambio = UNO;
|
||||
const TSolder_tree_flags flags = sct_all_games;
|
||||
switch (bill.tipo())
|
||||
{
|
||||
case 'C': bill.set(*this, F_GRUPPO, F_CONTO, F_CLIENTE); break;
|
||||
case 'F': bill.set(*this, F_GRUPPO, F_CONTO, F_FORNITORE); break;
|
||||
default : bill.set(*this, F_GRUPPO, F_CONTO, F_SOTTOCONTO); break;
|
||||
}
|
||||
}
|
||||
|
||||
bool popup_games(const TBill& bill)
|
||||
{
|
||||
TBill conto = bill;
|
||||
bool go = conto.find();
|
||||
if (go)
|
||||
{
|
||||
TPartitario part(conto);
|
||||
go = part.run() == K_ENTER;
|
||||
}
|
||||
return go;
|
||||
}
|
1
cg/cg3601.h
Normal file
1
cg/cg3601.h
Normal file
@ -0,0 +1 @@
|
||||
bool popup_games(const TBill& zio);
|
276
cg/cg4301.cpp
276
cg/cg4301.cpp
@ -751,6 +751,7 @@ static bool partita_chiusa_al(const TPartita& p, const TDate& d)
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
static void LOG_IVA_DIFF(const TRectype& id)
|
||||
{
|
||||
#ifndef NDEBUG
|
||||
@ -851,7 +852,6 @@ static void LOG_PIM_DIFF(const TRectype& pim)
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
static bool is_autofattura_articolo_17(const TRectype& mov)
|
||||
{
|
||||
// E' giusto prendere il tipo documento dal movimento senza fidarsi della causale? si.
|
||||
@ -901,6 +901,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
real esenti_b14 = ZERO;
|
||||
real vendite_rev = ZERO; // Vendire in reverse charge (da escludere in prorata)
|
||||
|
||||
/* Comunicazione dati iva annuale dal 2016 calcolata in cg5
|
||||
// Comunicazione dati iva annuale (dal 2003)
|
||||
real cessioni_cd1_1 = ZERO; // Totale operazioni attive
|
||||
real cessioni_cd1_2 = ZERO; // non imponibili
|
||||
@ -917,7 +918,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
real rottami_cd3_3 = ZERO; // imponibile acquisto rottami
|
||||
real rottami_cd3_4 = ZERO; // imposta acquisto rottami
|
||||
real cessioni_cd1_1s = ZERO; // Totale operazioni attive in split payment
|
||||
|
||||
*/
|
||||
|
||||
real esni_rimb = ZERO; // ci sommo tutti esenti e ni validi per rimborso
|
||||
real corr_CEE = ZERO;
|
||||
real corr_noCEE = ZERO;
|
||||
@ -1140,8 +1142,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
if (tipomov == vendita && (tm == tm_fattura || tm == tm_nota_credito) &&
|
||||
!cau_intra && date.year() >= 2015 && is_split_payment(_mov->curr()))
|
||||
{
|
||||
// *** aggiunto il 27-01-2016 ***
|
||||
// In tredicesima devo compilare anche CD1_1
|
||||
/* Dal 2016 calcoliamo comunicazione annuale in cg5
|
||||
// aggiunto il 27-01-2016: in tredicesima devo compilare anche CD1_1
|
||||
if (month == 13 && date.year() == year_int)
|
||||
{
|
||||
do // scansione semplificata delle righe IVA
|
||||
@ -1161,6 +1163,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
}
|
||||
} while (_cur->next_match(LF_RMOVIVA));
|
||||
}
|
||||
*/
|
||||
continue; // Ignora movimento di split payment
|
||||
}
|
||||
|
||||
@ -1633,6 +1636,138 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
impon_det, impos_det, impon_ind, impos_ind);
|
||||
}
|
||||
|
||||
|
||||
// Filling dell'array per IVA11
|
||||
if (_is_interactive && month == 13)
|
||||
iva11_set_arr_phase_1(trueatt);
|
||||
|
||||
|
||||
// Cumula l'ammontare delle operazioni attive/passive
|
||||
// per la dichiarazione annuale dati iva e quadro VT
|
||||
if (month == 13 && !fattrit)
|
||||
{
|
||||
|
||||
if (tipomov == vendita)
|
||||
{
|
||||
const long codcf = _mov->get_long(MOV_CODCF);
|
||||
|
||||
if (tipoiva.empty() && codcf != 0)
|
||||
{
|
||||
TString8 key; key.format("%c|%ld", _mov->get_char(MOV_TIPO), codcf);
|
||||
const TRectype& clifo = cache().get(LF_CLIFO, key);
|
||||
int codreg = 0; // codice regione x privati 22 == partite iva 0 == senza codice
|
||||
const int tipoalleg = clifo.get_int(CLI_ALLEG);
|
||||
|
||||
if (tipoalleg == 6) // privato
|
||||
{
|
||||
if (clifo.get_bool(CLI_OCCAS))
|
||||
{
|
||||
const TString& key_occ = _mov->get(MOV_OCFPI);
|
||||
const TRectype& occas = cache().get(LF_OCCAS, key_occ);
|
||||
|
||||
key = occas.get(OCC_STATO);
|
||||
key << "|" << occas.get(OCC_COM);
|
||||
}
|
||||
else
|
||||
{
|
||||
key = clifo.get(CLI_STATOCF);
|
||||
key << "|" << clifo.get(CLI_COMCF);
|
||||
}
|
||||
|
||||
const TRectype& comune = cache().get(LF_COMUNI, key);
|
||||
codreg = comune.get_int(COM_CODREG) + 1;
|
||||
}
|
||||
|
||||
if (bIsMovDiff)
|
||||
{
|
||||
vt_imponibile[codreg] += incdiff_imp;
|
||||
vt_imposta[codreg] += incdiff_iva;
|
||||
}
|
||||
else
|
||||
{
|
||||
vt_imponibile[codreg] += imponibile_orig;
|
||||
vt_imposta[codreg] += imposta_orig;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Calcoli sprecati: dal 2016 calcolimao la comuncazione annuale direttamente in cg5
|
||||
const TString& iva_vpn = _iva->get(tipomov == vendita ? "S10" : "S11");
|
||||
|
||||
// Aggiunto "&& is_detraibile==0" al test altrimenti somma due volte imponibile_orig (22/01/2015)
|
||||
if (!bIsMovDiff && iva_vpn.full() && _mov->get_int(MOV_ANNOIVA) == year_int && is_detraibile == 0)
|
||||
{
|
||||
switch (tipomov)
|
||||
{
|
||||
case vendita: // CD1 - 1 2 3 4
|
||||
{
|
||||
// bool is_valid = !corrisp && tipodoc != "AF" && (cau_intra || !cau_valintra) &&
|
||||
// sosp_imp != normale && sosp_imp != liquidazione;
|
||||
bool is_valid = tipodoc != "AF" && sosp_imp != normale && sosp_imp != liquidazione;
|
||||
if (is_valid)
|
||||
{
|
||||
cessioni_cd1_1 += imponibile_orig;
|
||||
if (iva_vpn.starts_with("CD1"))
|
||||
{
|
||||
if (tipocr == 4)
|
||||
cessioni_cd1_5 += imponibile_orig;
|
||||
}
|
||||
if (!cau_intra)
|
||||
{
|
||||
if (iva_vpn == "CD12")
|
||||
cessioni_cd1_2 += imponibile_orig; else
|
||||
if (iva_vpn == "CD13")
|
||||
cessioni_cd1_3 += imponibile_orig;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (iva_vpn == "CD14")
|
||||
cessioni_cd1_4 += imponibile_orig;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
case acquisto: // CD2 - 1 2 3 4
|
||||
{
|
||||
acquisti_cd2_1 += imponibile_orig;
|
||||
if (iva_vpn.starts_with("CD2"))
|
||||
{
|
||||
if (tipocr == 2 || tipocr == 3 || tipocr == 8)
|
||||
acquisti_cd2_5 += imponibile_orig;
|
||||
}
|
||||
if (!cau_intra)
|
||||
{
|
||||
if (iva_vpn == "CD22")
|
||||
acquisti_cd2_2 += imponibile_orig;
|
||||
else
|
||||
if (iva_vpn == "CD23")
|
||||
acquisti_cd2_3 += imponibile_orig;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (iva_vpn == "CD24")
|
||||
acquisti_cd2_4 += imponibile_orig;
|
||||
}
|
||||
if (iva_vpn == "CD31")
|
||||
{
|
||||
oroargento_cd3_1 += imponibile_orig;
|
||||
oroargento_cd3_2 += imposta_orig;
|
||||
}
|
||||
if (iva_vpn == "CD33")
|
||||
{
|
||||
rottami_cd3_3 += imponibile_orig;
|
||||
rottami_cd3_4 += imposta_orig;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
for (int is_detraibile = 0; is_detraibile < 2; is_detraibile++)
|
||||
{
|
||||
const int tipodet = is_detraibile ? 0 : tipoind;
|
||||
@ -1653,132 +1788,6 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
|
||||
/* Riga imponibile > 9 = ritenute; non si considerano (Scudler 1994) */
|
||||
|
||||
// Filling dell'array per IVA11
|
||||
if (_is_interactive && month == 13)
|
||||
iva11_set_arr_phase_1(trueatt);
|
||||
|
||||
// Cumula l'ammontare delle operazioni attive/passive
|
||||
// per la dichiarazione annuale dati iva e quadro VT
|
||||
if (month == 13 && !fattrit)
|
||||
{
|
||||
if (tipomov == vendita)
|
||||
{
|
||||
const long codcf = _mov->get_long(MOV_CODCF);
|
||||
|
||||
if (tipoiva.empty() && codcf != 0)
|
||||
{
|
||||
TString8 key; key.format("%c|%ld", _mov->get_char(MOV_TIPO), codcf);
|
||||
const TRectype& clifo = cache().get(LF_CLIFO, key);
|
||||
int codreg = 0; // codice regione x privati 22 == partite iva 0 == senza codice
|
||||
const int tipoalleg = clifo.get_int(CLI_ALLEG);
|
||||
|
||||
if (tipoalleg == 6) // privato
|
||||
{
|
||||
if (clifo.get_bool(CLI_OCCAS))
|
||||
{
|
||||
const TString& key_occ = _mov->get(MOV_OCFPI);
|
||||
const TRectype& occas = cache().get(LF_OCCAS, key_occ);
|
||||
|
||||
key = occas.get(OCC_STATO);
|
||||
key << "|" << occas.get(OCC_COM);
|
||||
}
|
||||
else
|
||||
{
|
||||
key = clifo.get(CLI_STATOCF);
|
||||
key << "|" << clifo.get(CLI_COMCF);
|
||||
}
|
||||
|
||||
const TRectype& comune = cache().get(LF_COMUNI, key);
|
||||
codreg = comune.get_int(COM_CODREG) + 1;
|
||||
}
|
||||
|
||||
if (bIsMovDiff)
|
||||
{
|
||||
vt_imponibile[codreg] += incdiff_imp;
|
||||
vt_imposta[codreg] += incdiff_iva;
|
||||
}
|
||||
else
|
||||
{
|
||||
vt_imponibile[codreg] += imponibile;
|
||||
vt_imposta[codreg] += imposta;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const TString& iva_vpn = _iva->get(tipomov == vendita ? "S10" : "S11");
|
||||
|
||||
// Aggiunto "&& is_detraibile==0" al test altrimenti somma due volte imponibile_orig (22/01/2015)
|
||||
if (!bIsMovDiff && iva_vpn.full() && _mov->get_int(MOV_ANNOIVA) == year_int && is_detraibile == 0)
|
||||
{
|
||||
switch (tipomov)
|
||||
{
|
||||
case vendita: // CD1 - 1 2 3 4
|
||||
{
|
||||
// bool is_valid = !corrisp && tipodoc != "AF" && (cau_intra || !cau_valintra) &&
|
||||
// sosp_imp != normale && sosp_imp != liquidazione;
|
||||
bool is_valid = tipodoc != "AF" && sosp_imp != normale && sosp_imp != liquidazione;
|
||||
if (is_valid)
|
||||
{
|
||||
cessioni_cd1_1 += imponibile_orig;
|
||||
if (iva_vpn.starts_with("CD1"))
|
||||
{
|
||||
if (tipocr == 4)
|
||||
cessioni_cd1_5 += imponibile_orig;
|
||||
}
|
||||
if (!cau_intra)
|
||||
{
|
||||
if (iva_vpn == "CD12")
|
||||
cessioni_cd1_2 += imponibile_orig; else
|
||||
if (iva_vpn == "CD13")
|
||||
cessioni_cd1_3 += imponibile_orig;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (iva_vpn == "CD14")
|
||||
cessioni_cd1_4 += imponibile_orig;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
case acquisto: // CD2 - 1 2 3 4
|
||||
{
|
||||
acquisti_cd2_1 += imponibile_orig;
|
||||
if (iva_vpn.starts_with("CD2"))
|
||||
{
|
||||
if (tipocr == 2 || tipocr == 3 || tipocr == 8)
|
||||
acquisti_cd2_5 += imponibile_orig;
|
||||
}
|
||||
if (!cau_intra)
|
||||
{
|
||||
if (iva_vpn == "CD22")
|
||||
acquisti_cd2_2 += imponibile_orig;
|
||||
else
|
||||
if (iva_vpn == "CD23")
|
||||
acquisti_cd2_3 += imponibile_orig;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (iva_vpn == "CD24")
|
||||
acquisti_cd2_4 += imponibile_orig;
|
||||
}
|
||||
if (iva_vpn == "CD31")
|
||||
{
|
||||
oroargento_cd3_1 += imponibile_orig;
|
||||
oroargento_cd3_2 += imposta_orig;
|
||||
}
|
||||
if (iva_vpn == "CD33")
|
||||
{
|
||||
rottami_cd3_3 += imponibile_orig;
|
||||
rottami_cd3_4 += imposta_orig;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (noninc) // non incassati: non devono entrare in nessun altro calcolo
|
||||
{
|
||||
@ -2484,8 +2493,6 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
const real oldv = tab->get("R29");
|
||||
const real newv = oldv + incdiff_iva;
|
||||
const long numreg = _mov->get_long(MOV_NUMREG);
|
||||
if (numreg == 23260)
|
||||
int cazzone = 1;
|
||||
__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,
|
||||
numreg, oldv.stringa(12, 2), incdiff_iva.stringa(12, 2), newv.stringa(12, 2));
|
||||
}
|
||||
@ -2748,6 +2755,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
_pum->put("S5", esenti_c1a_bam);
|
||||
_pum->put("R7", esenti_b14);
|
||||
_pum->put("R12", esni_rimb);
|
||||
|
||||
/* Dal 2016 calcoliamo comunicazione annuale in cg5
|
||||
_pum->put("R14", cessioni_cd1_1);
|
||||
_pum->put("R15", cessioni_cd1_2);
|
||||
_pum->put("R16", cessioni_cd1_3);
|
||||
@ -2764,7 +2773,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
_pum->put("R27", cessioni_cd1_5);
|
||||
_pum->put("R28", vendite_rev); // Vendite in reverse charge da escludere da prorata
|
||||
_pum->put("R29", cessioni_cd1_1s); // cessioni in split
|
||||
|
||||
*/
|
||||
|
||||
_pam->put("R0", acquisti);
|
||||
_pam->put("R1", vendite);
|
||||
_pam->put("R6", assp_imp);
|
||||
|
@ -248,7 +248,7 @@ protected:
|
||||
void read_iva_data();
|
||||
real imposta_diff(int tipo) const;
|
||||
void calc_cd_new(int anno, Tcd& s) const;
|
||||
void calc_cd_old(int anno, Tcd& s) const;
|
||||
//void calc_cd_old(int anno, Tcd& s) const;
|
||||
|
||||
public:
|
||||
void set_prospect();
|
||||
@ -283,17 +283,12 @@ real TDich_periodica_iva_mask::imposta_diff(int tipo) const
|
||||
real imposta;
|
||||
|
||||
const int anno = _sf->get_year();
|
||||
const TDate data_da(1,1,anno);
|
||||
const TDate data_a(31,12,anno);
|
||||
|
||||
TString query;
|
||||
query << "USE IVADIFF SELECT (BETWEEN(DATAREGP,#DAL,#AL))&&(STR("
|
||||
<< "(MOV.TOTDOC>0)&&(TIPOMOV>2)&&(MESELIQ<13)&&(TIPOIVA=" << tipo << ')'
|
||||
<< "))";
|
||||
query << "\nJOIN MOV INTO NUMREG==NUMREG";
|
||||
query << "USE IVADIFF KEY 2"
|
||||
<< "\nSELECT (TIPOMOV>2)&&(MESELIQ<13)&&(TIPOIVA=" << tipo << ')'
|
||||
<< "\nFROM ANNOLIQ=" << anno
|
||||
<< "\nTO ANNOLIQ=" << anno;
|
||||
TISAM_recordset id(query);
|
||||
id.set_var("#DAL", data_da);
|
||||
id.set_var("#AL", data_a);
|
||||
|
||||
TProgress_monitor pi(id.items(), TR("Calcolo IVA differita"));
|
||||
for (bool ok = id.move_first(); ok; ok = id.move_next())
|
||||
@ -465,6 +460,7 @@ void TDich_periodica_iva_mask::calc_cd_new(int anno, Tcd& s) const
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
void TDich_periodica_iva_mask::calc_cd_old(int anno, Tcd& s) const
|
||||
{
|
||||
s.Reset();
|
||||
@ -505,6 +501,7 @@ void TDich_periodica_iva_mask::calc_cd_old(int anno, Tcd& s) const
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
void TDich_periodica_iva_mask::read_iva_data()
|
||||
{
|
||||
@ -518,7 +515,7 @@ void TDich_periodica_iva_mask::read_iva_data()
|
||||
TString descrizione(120); descrizione << lim.get("S0") << lim.get("S1");
|
||||
const bool exclude_sign = descrizione.find("$$") >= 0 || descrizione.find(">>") >= 0;
|
||||
|
||||
Tcd cd_old; calc_cd_old(anno, cd_old);
|
||||
//Tcd cd_old; calc_cd_old(anno, cd_old);
|
||||
Tcd cd_new; calc_cd_new(anno, cd_new);
|
||||
|
||||
real cd1_1 = cd_new.cd1_1; cd1_1.round();
|
||||
|
@ -597,7 +597,11 @@ bool TLibro_giornale::read(int y)
|
||||
if (y <= 0)
|
||||
{
|
||||
TEsercizi_contabili esc;
|
||||
y = esc[esc.last()].inizio().year();
|
||||
const int lastes = esc.last();
|
||||
if (lastes > 0)
|
||||
y = esc[lastes].inizio().year();
|
||||
else
|
||||
y = TDate(TODAY).year();
|
||||
}
|
||||
|
||||
TString4 anno; anno.format("%04d", y);
|
||||
@ -693,7 +697,6 @@ real TCodiceIVA::scorpora(real& lordo, int ndec, const char* codval) const
|
||||
real TCodiceIVA::lordo(const real& imponibile, int ndec, const char* codval) const
|
||||
{ return imponibile + imposta(imponibile, ndec, codval); }
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TBill
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -760,7 +763,6 @@ const TBill& TBill::copy(const TBill& bill)
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
// Certified 100%
|
||||
const TBill& TBill::set(int g, int c, long s, char t, const char* d, int r)
|
||||
{
|
||||
@ -886,7 +888,7 @@ void TBill::get(const TMask& m, short g, short c, short s, short t, short d)
|
||||
{
|
||||
const int gr = m.get_int(g);
|
||||
const int co = m.get_int(c);
|
||||
const long so = m.get_long(s);
|
||||
const long so = s > 0 ? m.get_long(s) : 0L;
|
||||
char ti = ' ';
|
||||
if (t)
|
||||
ti = m.get(t)[0];
|
||||
@ -896,7 +898,6 @@ void TBill::get(const TMask& m, short g, short c, short s, short t, short d)
|
||||
set(gr, co, so, ti, de);
|
||||
}
|
||||
|
||||
|
||||
// Certified 100%
|
||||
bool TBill::ok() const
|
||||
{
|
||||
@ -922,7 +923,6 @@ int TBill::compare(const TSortable& s) const
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
// Certified 95%
|
||||
bool TBill::find()
|
||||
{
|
||||
@ -962,7 +962,7 @@ bool TBill::find()
|
||||
if (tipoa == 'F') // Se persona fisica allora aggiusta la ragione sociale
|
||||
{
|
||||
TString nome(descrizione().mid(30));
|
||||
if (nome.not_empty())
|
||||
if (nome.full())
|
||||
{
|
||||
_descrizione->cut(30);
|
||||
_descrizione->trim(); nome.trim();
|
||||
|
Loading…
x
Reference in New Issue
Block a user