Collegamento cg <-> fe

git-svn-id: svn://10.65.10.50/branches/R_10_00@22901 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2013-12-13 09:24:56 +00:00
parent a9517e3cf5
commit 6c28b4a0ab
17 changed files with 4262 additions and 4290 deletions

View File

@ -203,7 +203,7 @@ void TPianoconti_app::init_insert_mode(TMask& m)
m.show(FLD_CM1_IVACOMP, indbil == RICAVI); m.show(FLD_CM1_IVACOMP, indbil == RICAVI);
m.show(FLD_CM1_DESCIVACOMP, indbil == RICAVI); m.show(FLD_CM1_DESCIVACOMP, indbil == RICAVI);
} }
m.show(FLD_CM1_RICSER, indbil == PASSIVITA || indbil == RICAVI); // m.show(FLD_CM1_RICSER, indbil == PASSIVITA || indbil == RICAVI); // Sempre visibile per spesometro dal 9-10-2013
if (conto != 0) if (conto != 0)
{ {
m.enable(FLD_CM1_SEZIVD, ivd_enable); m.enable(FLD_CM1_SEZIVD, ivd_enable);

View File

@ -420,11 +420,11 @@ END
LIST FLD_CM1_RICSER 1 18 LIST FLD_CM1_RICSER 1 18
BEGIN BEGIN
PROMPT 1 12 "Ricavi per servizi " PROMPT 1 12 "Merce / Servizi "
FIELD RICSER FIELD RICSER
FLAGS "H" ITEM "0|"
ITEM "0|Altre attivita'"
ITEM "1|Servizi" ITEM "1|Servizi"
ITEM "2|Merce"
END END
STRING FLD_CM1_IVACOMP 4 STRING FLD_CM1_IVACOMP 4

View File

@ -288,7 +288,7 @@ BEGIN
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
NUMBER F_ALLEG 1 STRING F_ALLEG 1
BEGIN BEGIN
PROMPT 2 14 "Tipo cliente/fornitore " PROMPT 2 14 "Tipo cliente/fornitore "
FIELD ALLEG FIELD ALLEG
@ -305,6 +305,7 @@ BEGIN
ITEM "7|Ente pubblico" ITEM "7|Ente pubblico"
ITEM "8|Fallimento/proc.concorsuale" ITEM "8|Fallimento/proc.concorsuale"
ITEM "9|Estero NON CEE" ITEM "9|Estero NON CEE"
ITEM "C|Scheda carburante"
OUTPUT F_ALLEG OUTPUT F_ALLEG
END END

View File

@ -585,14 +585,14 @@ void TPrimanota_application::init_mask(TMask& m)
m.show(-2, forg); m.show(-2, forg);
} }
m.hide(-7); // Nascondi tutti i campi del modulo FE (compreso FE_MODPAG) m.hide(-7); // Nascondi tutti i campi del modulo FE
if (corrisp) if (corrisp)
m.hide(F_STATOPAIV); m.hide(F_STATOPAIV);
else else
{ {
if (has_module(FEAUT)) if (has_module(FEAUT))
m.show(FE_MODPAG); // Mostro FE_MODPAG solo se strettamente necessario m.show(FE_NOLEGGIO); // Mostro FE_MODPAG solo se strettamente necessario
} }
// Show/Hide campi valuta: F_VALUTAINTRA, F_CAMBIOINTRA, F_CORRISPETTIVO, F_CORRVAL (GROUP 4) // Show/Hide campi valuta: F_VALUTAINTRA, F_CAMBIOINTRA, F_CORRISPETTIVO, F_CORRVAL (GROUP 4)
@ -716,8 +716,8 @@ bool TPrimanota_application::can_I_write(const TRelation* rel) const
<< "La preghiamo di contattare Sirio informatica e sistemi ai seguenti riferimenti:</p><br/>" << "La preghiamo di contattare Sirio informatica e sistemi ai seguenti riferimenti:</p><br/>"
<< "<ul><li>Sara Coppini, segreteria commerciale: <br />" << "<ul><li>Sara Coppini, segreteria commerciale: <br />"
<< "<a href=mailto:scoppini@sirio-is.it>scoppini@sirio-is.it</a> Tel. 348-9897249</li>" << "<a href=mailto:scoppini@sirio-is.it>scoppini@sirio-is.it</a> Tel. 348-9897249</li>"
<< "<li>Morena Martini, responsabile commerciale canale: <br />" << "<li>Casella vocale Hotline Campo: <br />"
<< "<a href=mailto:mmartini@sirio-is.it>mmartini@sirio-is.it</a> Tel. 349-3421433</li></ul>" << "<a href=mailto:hotlinecampo@sirio-is.it>hotlinecampo@sirio-is.it</a> Tel. 0236583540</li></ul>"
<< "</body></html>"; << "</body></html>";
warning_box(html); warning_box(html);
} }
@ -2261,28 +2261,28 @@ bool TPrimanota_application::link_intra(const TMask& m, const char* action)
TString str; // Stringa jolly di lavoro TString str; // Stringa jolly di lavoro
str.format("%d", LF_INTRA); str.format("%d", LF_INTRA);
intro.set_paragraph(str); intro.set_paragraph(str);
intro.set("NUMREG", m.get(F_NUMREG)); intro.set(MOV_NUMREG, m.get(F_NUMREG));
intro.set("DATAREG", m.get(F_DATAREG)); intro.set(MOV_DATAREG, m.get(F_DATAREG));
if (m.field(F_CLIENTE).shown()) if (m.field(F_CLIENTE).shown())
{ {
intro.set("TIPOMOV", "C"); intro.set(MOV_TIPOMOV, "C"); // Cessione
intro.set("TIPOCF", "C"); intro.set("TIPOCF", "C"); // Cliente
intro.set("CODCF", m.get(F_CLIENTE)); intro.set(MOV_CODCF, m.get(F_CLIENTE));
} }
else else
{ {
intro.set("TIPOMOV", "A"); intro.set(MOV_TIPOMOV, "A"); // Acquisto
intro.set("TIPOCF", "F"); intro.set("TIPOCF", "F"); // Fornitore
intro.set("CODCF", m.get(F_FORNITORE)); intro.set(MOV_CODCF, m.get(F_FORNITORE));
} }
// Controlla flag sulla causale // Controlla flag sulla causale
const bool valintra = causale().valintra(); const bool valintra = causale().valintra();
if (valintra) if (valintra)
{ {
intro.set("CODVAL", m.get(F_VALUTAINTRA)); intro.set(MOV_CODVAL, m.get(F_VALUTAINTRA));
intro.set("CAMBIO", m.get(F_CAMBIOINTRA)); intro.set(MOV_CAMBIO, m.get(F_CAMBIOINTRA));
} }
// Inserisci il totale documento solo in inserimento! // Inserisci il totale documento solo in inserimento!
@ -2291,10 +2291,10 @@ bool TPrimanota_application::link_intra(const TMask& m, const char* action)
real totdoc = m.get_real(valintra ? F_CORRISPETTIVO : F_IMPONIBILI); real totdoc = m.get_real(valintra ? F_CORRISPETTIVO : F_IMPONIBILI);
if (test_swap(false)) if (test_swap(false))
totdoc = -totdoc; totdoc = -totdoc;
intro.set("TOTDOC", totdoc.string()); intro.set(MOV_TOTDOC, totdoc.string());
} }
else else
intro.remove("TOTDOC"); // Evita di cambiare il valore preesistente intro.remove(MOV_TOTDOC); // Evita di cambiare il valore preesistente
appname << "in0 -4 /i" << intrini; appname << "in0 -4 /i" << intrini;
} }

View File

@ -28,10 +28,7 @@
#define F_COFICLIENTE 155 #define F_COFICLIENTE 155
#define F_RICALTCLIENTE 156 #define F_RICALTCLIENTE 156
#define FE_CONTRATTO 157 #define FE_NOLEGGIO 157
#define FE_MODPAG 158
#define FE_DATARETT 159
#define FE_NUMRETT 160
#define F_FORNITORE 161 #define F_FORNITORE 161
#define F_RAGSOCFORNITORE 162 #define F_RAGSOCFORNITORE 162

View File

@ -439,65 +439,17 @@ BEGIN
FLAGS "H" FLAGS "H"
END END
LIST FE_MODPAG 1 16 LIST FE_NOLEGGIO 2 10
BEGIN BEGIN
PROMPT 1 12 "Tipo " PROMPT 1 12 "Tipo veicolo a noleggio (spesometro) "
ITEM "1|Non frazionato" ITEM " |Nessuno"
MESSAGE HIDE,FE_CONTRATTO|RESET,FE_CONTRATTO|SHOW,FE_DATARETT|SHOW,FE_NUMRETT ITEM "A|Automobile"
ITEM "2|Frazionato" ITEM "B|Camper"
MESSAGE SHOW,FE_CONTRATTO|HIDE,FE_DATARETT|HIDE,FE_NUMRETT ITEM "C|Altro"
ITEM "3|Periodico" ITEM "D|Diporto"
MESSAGE SHOW,FE_CONTRATTO|HIDE,FE_DATARETT|HIDE,FE_NUMRETT ITEM "E|Aeromobile"
FIELD NOLEGGIO
GROUP 7 GROUP 7
FIELD MODPAG
MODULE fe
END
STRING FE_CONTRATTO 18
BEGIN
PROMPT 32 12 "Contratto di riferimento "
FLAGS "U"
FIELD CONTRATTO
USE &FECON
INPUT CODTAB[1,1] F_CLIFO SELECT
INPUT CODTAB[2,7] F_CLIENTE SELECT
INPUT CODTAB[8,25] FE_CONTRATTO
DISPLAY "Contratto" CODTAB[8,]
DISPLAY "Descrizione@50" S0
DISPLAY "Pagamento" S6
OUTPUT FE_CONTRATTO CODTAB[8,]
OUTPUT FE_MODPAG S6
CHECKTYPE REQUIRED
HELP "Inserire un codice contratto di importo non inferiore a 3000 Euro"
ADD RUN fe0 -1 &CON
GROUP 7
END
DATE FE_DATARETT
BEGIN
PROMPT 26 12 "Variazione al documento "
USE MOV KEY 3
INPUT TIPO F_CLIFO SELECT
INPUT CODCF F_CLIENTE SELECT
INPUT DATAREG FE_DATARETT
DISPLAY "Data reg.@10" DATAREG
DISPLAY "Numero@7" NUMDOC
DISPLAY "Num.Reg.@7" NUMREG
DISPLAY "Descrizione@50" DESCR
OUTPUT FE_DATARETT DATAREG
OUTPUT FE_NUMRETT NUMDOC
FIELD DATARETT
GROUP 7
END
STRING FE_NUMRETT 7
BEGIN
PROMPT 66 12 "N."
COPY ALL FE_DATARETT
CHECKTYPE SEARCH
FIELD NUMRETT
GROUP 7
FLAGS "U"
END END
// Campi per saldaconto in valuta // Campi per saldaconto in valuta

View File

@ -260,7 +260,7 @@ int TMovimentoPN::registra(bool re, bool force)
// Aggiorna data registrazione e protocollo IVA sul registro // Aggiorna data registrazione e protocollo IVA sul registro
const TDate datareg(m.get(MOV_DATAREG)); const TDate datareg(m.get(MOV_DATAREG));
if (reg.not_empty()) if (reg.full())
{ {
const long protiva = m.get_long(MOV_PROTIVA); const long protiva = m.get_long(MOV_PROTIVA);
const long uprotiva = m.get_long(MOV_UPROTIVA); const long uprotiva = m.get_long(MOV_UPROTIVA);

View File

@ -827,7 +827,6 @@ TGrid_control::TGrid_control(
if ((f_width+max_width)*XI_FU_MULTIPLE > rct.right) if ((f_width+max_width)*XI_FU_MULTIPLE > rct.right)
fixed_columns = 1; fixed_columns = 1;
long list_attr = XI_ATR_ENABLED | XI_ATR_VISIBLE; long list_attr = XI_ATR_ENABLED | XI_ATR_VISIBLE;
// if (_read_only) list_attr |= XI_ATR_NAVIGATE; // if (_read_only) list_attr |= XI_ATR_NAVIGATE;
@ -1180,11 +1179,9 @@ bool TGrid_control::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
{ {
if (xiev->v.select.column == 0) if (xiev->v.select.column == 0)
{ {
if (_read_only) // if (_read_only) // Commentato 8/11/2013 altrimenti non funziona più collegamento a cg2
{ // refused = !select(rec);
refused = !select(rec); // else
}
else
{ {
if (rec == _cur_rec) // Simulo intercettazione doppio click if (rec == _cur_rec) // Simulo intercettazione doppio click
_grid->on_record_button(rec); _grid->on_record_button(rec);
@ -1309,7 +1306,7 @@ XI_OBJ* TGrid_control::find_column(const char* head) const
int num = 0; int num = 0;
XI_OBJ** column = xi_get_member_list(_obj, &num); XI_OBJ** column = xi_get_member_list(_obj, &num);
TString80 text; TString256 text;
int i; int i;
for (i = num-1; i >= 0; i--) for (i = num-1; i >= 0; i--)
{ {
@ -1708,9 +1705,9 @@ void TMastrini_grid::cell_request(long rec, short id, TGrid_cell& cell)
XI_OBJ* col = grid().find_column(short(1000+id%1000)); XI_OBJ* col = grid().find_column(short(1000+id%1000));
if (col != NULL) if (col != NULL)
{ {
TString80 head; TString256 str;
xi_get_text(col, head.get_buffer(), head.size()); xi_get_text(col, str.get_buffer(), str.size());
cell = head; cell = str;
} }
return; return;

View File

@ -228,8 +228,8 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
if (_prind) if (_prind)
{ {
TString buf(80); TString buf(80);
buf.format( _printonly ? FR("Stampa liquidazione (mese %d %d)...\n%s: %s\n") : buf.format( _printonly ? FR("Stampa liquidazione (mese %d %d)...\n%s:\n%s\n") :
FR("Calcolo liquidazione (mese %d %d)...\n%s: %s\n"), FR("Calcolo liquidazione (mese %d %d)...\n%s:\n%s\n"),
month, atoi(_year), (const char*)_nditte_r->get(NDT_RAGSOC), (const char*)desatt); month, atoi(_year), (const char*)_nditte_r->get(NDT_RAGSOC), (const char*)desatt);
_prind->set_text(buf); _prind->set_text(buf);
} }
@ -293,20 +293,20 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
if (!_recalc_regis && tipoatt == 1 && waspla && month == 13) if (!_recalc_regis && tipoatt == 1 && waspla && month == 13)
{ {
// azzera pla dove serve // azzera pla dove serve
_pla->put("R0",""); _pla->zero("R0");
_pla->put("R1",""); _pla->zero("R1");
_pla->put("R2",""); _pla->zero("R2");
_pla->put("R3",""); _pla->zero("R3");
_pla->put("R4",""); _pla->zero("R4");
_pla->put("R13",""); _pla->zero("R13");
_pla->put("R9",""); _pla->zero("R9");
_pla->put("R10",""); _pla->zero("R10");
_pla->put("R11",""); _pla->zero("R11");
_pla->put("R12",""); _pla->zero("R12");
_pla->put("R14",""); _pla->zero("R14");
_pla->put("R15",""); _pla->zero("R15");
_pla->put("R16",""); _pla->zero("R16");
_pla->put("R17",""); _pla->zero("R17");
_pla->put("S1","0"); _pla->put("S1","0");
_pla->put("S2","0"); _pla->put("S2","0");
_pla->put("S3","0"); _pla->put("S3","0");
@ -719,6 +719,17 @@ bool TLiquidazione_app::residuo_da_liquidare(long numreg, int numrig, const TDat
return found; return found;
} }
static bool partita_chiusa_al(const TPartita& p, const TDate& d)
{
bool c = p.chiusa();
if (c)
{
const TImporto imp = p.calcola_saldo_al(true, d, d, d);
c = imp.is_zero();
}
return c;
}
void TLiquidazione_app::recalc_att(int month, const char* codatt) void TLiquidazione_app::recalc_att(int month, const char* codatt)
// il codatt passato e' codice att + tipo att ( IN {1|2} ) // il codatt passato e' codice att + tipo att ( IN {1|2} )
// occhecasino. Se _comp_acconto e' TRUE, i movimenti considerati // occhecasino. Se _comp_acconto e' TRUE, i movimenti considerati
@ -899,7 +910,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
// if (_isdiff) // if (_isdiff)
// f = TDate(1, 1, year_int-5); // f = TDate(1, 1, year_int-5);
if (year_int < 1998 || _recalc_regis) // Vecchia selezione o calcolo progoressivi per stampa registri bollati if (year_int < 1998 || _recalc_regis) // Vecchia selezione 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);
@ -967,8 +978,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
tm = tm_nota_credito; tm = tm_nota_credito;
} }
// Controlla se la data del documento si riferisce all'anno precedente (PRORATA 1998) if (_mov->get_long(MOV_NUMREG) == 29103)
const TDate datedoc = _mov->get(MOV_DATADOC); int cazzone = 1;
if (_isviaggio) if (_isviaggio)
{ {
@ -1206,12 +1217,6 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
if (!pagscatt.empty()) if (!pagscatt.empty())
{ {
#ifdef DBG
if (_mov->get_long(MOV_NUMREG) == 13871)
xvt_dm_popup_message("Aggiornamento IVADIFF per movimento 13871");
#endif
const char sezpag = tipomov == vendita ? 'A' : 'D'; const char sezpag = tipomov == vendita ? 'A' : 'D';
const real totfat = _mov->get(MOV_TOTDOC); const real totfat = _mov->get(MOV_TOTDOC);
@ -1251,7 +1256,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
d = rp.get(PART_DATAREG); d = rp.get(PART_DATAREG);
id.put("DATAREGP", d); id.put("DATAREGP", d);
pagtmp = p.importo_pagsca(pagsca); pagtmp = p.importo_pagsca(pagsca);
if (p.chiusa() && rp.tipo() >= 3) if (tipomov_pag >= tm_pagamento && partita_chiusa_al(p, fine))
{ {
ultimo = true; ultimo = true;
for (int r = p.last(); r > nrigp; r = p.pred(r)) for (int r = p.last(); r > nrigp; r = p.pred(r))
@ -1300,22 +1305,25 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
} }
else else
{ {
id.put(PAGSCA_IMPORTO, pagtmp.valore()); // Spostato in basso ricalcolo importo ragguagliato 24/09/2013
pagtmp.normalize(sezpag); // id.put(PAGSCA_IMPORTO, pagtmp.valore());
// pagtmp.normalize(sezpag);
const real perc = pagtmp.valore() / totfat; const real perc = pagtmp.valore() / totfat;
real val = imponibile_orig * perc; real val_imp = imponibile_orig * perc;
round_imposta(val); round_imposta(val_imp);
id.put(RMI_IMPONIBILE, val); id.put(RMI_IMPONIBILE, val_imp);
if (tipomov_pag >= tm_pagamento) if (tipomov_pag >= tm_pagamento)
incdiff_imp += val; incdiff_imp += val_imp;
val = imposta_orig * perc; real val_iva = imposta_orig * perc;
round_imposta(val); round_imposta(val_iva);
id.put(RMI_IMPOSTA, val); id.put(RMI_IMPOSTA, val_iva);
if (tipomov_pag >= tm_pagamento) if (tipomov_pag >= tm_pagamento)
incdiff_iva += val; incdiff_iva += val_iva;
id.put(PAGSCA_IMPORTO, val_imp + val_iva); // Ricalcolo importo
} }
int err = id.write_rewrite(); int err = id.write_rewrite();
@ -1924,25 +1932,26 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
bdv += bolld_iva; bdv += bolld_iva;
} }
if (liq && tipomov == vendita && !corrisp) if (tipomov == vendita && liq && !corrisp)
// i corrispettivi sono gestiti a parte // i corrispettivi sono gestiti a parte
{ {
// totale vendite // totale vendite
vendite += imponibile; vendite += imponibile;
vendite_iva += imposta; vendite_iva += imposta;
} }
else if ((liq || fattrit && month == 13) && tipomov == acquisto) else if (tipomov == acquisto && (liq || fattrit && month == 13))
{ {
// totale acquisti // totale acquisti
acquisti += imponibile; acquisti += imponibile;
acquisti_iva += imposta; acquisti_iva += imposta;
// Controlla se la data del documento si riferisce all'anno precedente (PRORATA 1998)
const TDate datedoc = _mov->get_date(MOV_DATADOC);
const int yr = datedoc.year(); const int yr = datedoc.year();
if (!imposta.is_zero() && (yr < (year_int-1) && yr > (year_int-4))) // Prende un intervallo di 2 anni al massimo
if (year_int > 1997 && (yr < (year_int-1) && yr > (year_int-4))) // Prende un intervallo di 2 anni al massimo
{ // Quelli relativi all'anno in corso e precedente vanno assieme. { // Quelli relativi all'anno in corso e precedente vanno assieme.
// Se abilitato, somma l'iva acquisti relativi ai documenti memorizzati con anni precedenti // Se abilitato, somma l'iva acquisti relativi ai documenti memorizzati con anni precedenti
TString4 yy; yy << datedoc.year(); TString4 yy; yy << yr;
const bool is_key = acq_iva_anni_prec.is_key(yy); const bool is_key = acq_iva_anni_prec.is_key(yy);
if (!is_key) if (!is_key)
acq_iva_anni_prec.add(yy, new real, is_key); acq_iva_anni_prec.add(yy, new real, is_key);
@ -2323,7 +2332,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
percentuale1 = _prorata.percentuale(yy); percentuale1 = _prorata.percentuale(yy);
prorata_precedente1 = rr1 ? _prorata.calc_prorata(*rr1, yy) : ZERO; prorata_precedente1 = rr1 ? _prorata.calc_prorata(*rr1, yy) : ZERO;
// Se sono presenti documenti di anni precedenti senza % prorata, si deve segnalare l'incongruenza (solo in prova) // Se sono presenti documenti di anni precedenti senza % prorata, si deve segnalare l'incongruenza (solo in prova)
if (percentuale1 == INVALID_PRORATA && rr1 && *rr1 != ZERO) if (percentuale1 == INVALID_PRORATA && rr1 && !rr1->is_zero())
percentuale1 = INVALID_PRORATA_ASSERT; percentuale1 = INVALID_PRORATA_ASSERT;
// Prorata per documenti registrati con anno doc 3 anni fa... // Prorata per documenti registrati con anno doc 3 anni fa...
@ -2333,7 +2342,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
percentuale2 = _prorata.percentuale(yy); percentuale2 = _prorata.percentuale(yy);
prorata_precedente2 = rr2 ? _prorata.calc_prorata(*rr2, yy) : ZERO; prorata_precedente2 = rr2 ? _prorata.calc_prorata(*rr2, yy) : ZERO;
// Se sono presenti documenti di anni precedenti senza % prorata, si deve segnalare l'incongruenza (solo in prova) // Se sono presenti documenti di anni precedenti senza % prorata, si deve segnalare l'incongruenza (solo in prova)
if (percentuale2 == INVALID_PRORATA && rr2 && *rr2 != ZERO) if (percentuale2 == INVALID_PRORATA && rr2 && !rr2->is_zero())
percentuale2 = INVALID_PRORATA_ASSERT; percentuale2 = INVALID_PRORATA_ASSERT;
// Prorata per l'anno corrente + quelli eventuali dello scorso anno e quelli che sono oltre 3 anni fa... // Prorata per l'anno corrente + quelli eventuali dello scorso anno e quelli che sono oltre 3 anni fa...
@ -2344,8 +2353,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
if (percentuale2 != INVALID_PRORATA && percentuale2 != INVALID_PRORATA_ASSERT) if (percentuale2 != INVALID_PRORATA && percentuale2 != INVALID_PRORATA_ASSERT)
aaa -= rr2 ? *rr2 : ZERO; aaa -= rr2 ? *rr2 : ZERO;
prorata = _prorata.calc_prorata(aaa, _year); prorata = _prorata.calc_prorata(aaa, _year);
aaa = fdiffinc_iva_acq;
const real prorata_diff = _prorata.calc_prorata(aaa, _year); const real prorata_diff = _prorata.calc_prorata(fdiffinc_iva_acq, _year);
// Somma i vari prorata calcolati per gli anni precedenti // Somma i vari prorata calcolati per gli anni precedenti
prorata += prorata_precedente1 + prorata_precedente2; prorata += prorata_precedente1 + prorata_precedente2;

View File

@ -1142,7 +1142,7 @@ int TStampa_registri_app::setta_riga(int r, const TRigaiva& riga, real& tot1,
if (!riga._impostap.is_zero()) if (!riga._impostap.is_zero())
set_row(r, "@98g%r", &riga._impostap); set_row(r, "@98g%r", &riga._impostap);
} }
r++; // Incrementa sempre: cazzone! r++; // Incrementa sempre!
tot1 += riga._imponibile; tot1 += riga._imponibile;
tot2 += riga._imposta; tot2 += riga._imposta;

View File

@ -63,7 +63,6 @@ real indetraibile_al(const TString& codind, const TCausale& caus, int annodoc, i
int analizza_IVA(const real& imptot, const real& ivatot, const real perc_ind, int analizza_IVA(const real& imptot, const real& ivatot, const real perc_ind,
const bool corrispettivo, const bool iva_ind_al_costo, const TString& codiva, const bool corrispettivo, const bool iva_ind_al_costo, const TString& codiva,
real& imp_det, real& iva_det, real& imp_ind, real& iva_ind) real& imp_det, real& iva_det, real& imp_ind, real& iva_ind)
{ {
int flag = 0; int flag = 0;

View File

@ -100,7 +100,7 @@ Item_09 = "Tracciabilit
[CGMENU_010] [CGMENU_010]
Caption = "IVA" Caption = "IVA"
Picture = <cg01> Picture = <cg01>
Module = 5 Module = 7
Flags = "" Flags = ""
Item_01 = "Parametri liquidazione", "cg5 -3", "F" Item_01 = "Parametri liquidazione", "cg5 -3", "F"
Item_02 = "Liquidazione", "cg4 -2", "F" Item_02 = "Liquidazione", "cg4 -2", "F"
@ -287,7 +287,5 @@ Module = 7
Flags = "" Flags = ""
Item_01 = "Comunicazione annuale dati IVA", "cg5 -7", "F" Item_01 = "Comunicazione annuale dati IVA", "cg5 -7", "F"
Item_02 = "Quadro VT", "cg5 -8", "F" Item_02 = "Quadro VT", "cg5 -8", "F"
Item_03 = "Elenco clienti\fornitori", "cg3 -8", "F" Item_03 = "Elenco clienti/fornitori", "cg3 -8", "F"
Item_04 = "Comunicazione dati rilevanti", "fe0 -0", "F" Item_04 = "Comunicazione Polivalente", "fe0 -0", "F"
Item_05 = "Contratti per dati rilevanti", "fe0 -1 &CON", "F"
Item_06 = "Controllo archivi dati rilevanti", "fe0 -3", "F"

View File

@ -792,11 +792,22 @@ int TRiga_partite::ultima_ratapagata() const
// Certified 100% // Certified 100%
tipo_movimento TRiga_partite::tipo() const tipo_movimento TRiga_partite::tipo() const
{ {
const tipo_movimento tm = (tipo_movimento)(get_char(PART_TIPOMOV)-'0'); tipo_movimento tm = (tipo_movimento)(get_int(PART_TIPOMOV));
if (tm == tm_nessuno)
{
// Tento salvataggioin extremis
const int nriga = get_int(PART_NRIGA);
if (nriga == 1 && get_date(PART_DATADOC).ok())
tm = tm_fattura; else
if (nriga > 1 && get_date(PART_DATAPAG).ok())
tm = tm_pagamento;
#ifdef DBG #ifdef DBG
if (tm == tm_nessuno && get_int(PART_NRIGA) != TPartita::UNASSIGNED) if (tm == tm_nessuno && nriga != TPartita::UNASSIGNED)
yesnofatal_box("Riga partite con un tipo losco."); yesnofatal_box("Riga partite con un tipo losco.");
#endif #endif
}
return tm; return tm;
} }
@ -996,8 +1007,8 @@ TImporto TRiga_partite::importo(bool valuta, int mode) const
return i; return i;
} }
// Calcola l'esposto e l' esposto SBF // Calcola l'esposto e l'esposto SBF
TImporto TRiga_partite::esposto(bool valuta, const TDate & data_scad, const TDate & data_rischio, bool & sbf) const TImporto TRiga_partite::esposto(bool valuta, const TDate& data_scad, const TDate& data_rischio, bool & sbf) const
{ {
TImporto esposto; TImporto esposto;

View File

@ -1,3 +1,3 @@
22 22
0 0
$alleg|0|0|112|0|Comunicazione dati rilevanti||| $alleg|0|0|137|0|Comunicazione Spesometro|||

View File

@ -1,5 +1,5 @@
22 22
16 27
ANNO|2|4|0|Anno IVA ANNO|2|4|0|Anno IVA
PROGR|3|7|0|Progressivo PROGR|3|7|0|Progressivo
TIPOCF|1|1|0|Tipo <C>liente <F>ornitore TIPOCF|1|1|0|Tipo <C>liente <F>ornitore
@ -8,14 +8,25 @@ OCFPI|1|16|0|Codice occasionale
FORZATURA|8|1|0|Forzatura a mano FORZATURA|8|1|0|Forzatura a mano
IGNORA|2|2|0|Eventuale motivo per ignorare la riga (0 = da inviare) IGNORA|2|2|0|Eventuale motivo per ignorare la riga (0 = da inviare)
DATAREG|5|8|0|Data registrazione (art. 6 d.P.R.n.633/1972) DATAREG|5|8|0|Data registrazione (art. 6 d.P.R.n.633/1972)
NUMDOC|1|7|0|Numero Fattura (Obbligatorio se TIPOPE=1) NUMDOC|1|7|0|Numero Fattura
MODPAG|2|1|0|Modalità di pagamento (1=Non frazionato;2=Frazionato;3=Periodico) DATADOC|5|8|0|Data fattura
IMPORTO|4|12|2|Importo dovuto IMPORTO|4|12|2|Importo dovuto
IMPOSTA|4|12|2|Imposta IMPOSTA|4|12|2|Imposta
TIPOPE|2|1|0|Tipo operazione (1=Cessione;2=Acquisto) TIPOPE|1|2|0|Tipo operazione
CONTRATTO|1|18|0|Contratto MODPAG|2|1|0|Modalità di pagamento (1=Non frazionato;2=Frazionato;3=Periodico) (fino 2012)
DATARETT|5|8|0|Data documento rettificato CONTRATTO|1|18|0|Contratto (fino 2012)
NUMRETT|1|7|0|Numero documento rettificato DATARETT|5|8|0|Data documento rettificato (fino 2012)
NUMRETT|1|7|0|Numero documento rettificato (fino 2012)
NOLEGGIO|1|1|0|Tipo veicolo (A=Auto,B=Caravan;C=Altri;D=Diporto;E=Aeromobili) (dal 2013)
REVERSE|8|1|0|Reverse charge (dal 2013)
AUTOFATT|8|1|0|Autofattura (dal 2013)
SERVIZI|8|1|0|Acquisto servizi (dal 2013)
TURISMO|8|1|0|Operazione legate al turismo (dal 2013)
RIEPILOG|8|1|0|Fattura riepilogativa (dal 2013)
CARBURAN|8|1|0|Carta Carburanti (dal 2013)
ATTAGG|2|4|0|Operazioni attive aggregate (dal 2013)
PASAGG|2|4|0|Operazioni passive aggregate (dal 2013)
TIPOIVA|2|1|0|Tipo IVA (dal 2013)
3 3
ANNO+PROGR| ANNO+PROGR|
ANNO+TIPOCF+CODCF+OCFPI+PROGR| ANNO+TIPOCF+CODCF+OCFPI+PROGR|

View File

@ -1,3 +1,3 @@
23 23
0 0
$mov|0|0|471|0|Movimenti di prima nota||| $mov|0|0|442|0|Movimenti di prima nota|||

View File

@ -1,5 +1,5 @@
23 23
55 52
ANNOES|9|4|0|Codice esercizio ANNOES|9|4|0|Codice esercizio
NUMREG|3|7|0|Numero di operazione NUMREG|3|7|0|Numero di operazione
DATAREG|5|8|0|Data operazione DATAREG|5|8|0|Data operazione
@ -49,11 +49,8 @@ DNDOC|3|7|0|Documento originale NDOC
DATAINC|5|8|0|Data di incasso per liquidazione differita DATAINC|5|8|0|Data di incasso per liquidazione differita
LIQDIFF|8|1|0|Flag di movimento a liquidazione differita LIQDIFF|8|1|0|Flag di movimento a liquidazione differita
IVAXCASSA|8|1|0|Flag di movimento IVA per cassa IVAXCASSA|8|1|0|Flag di movimento IVA per cassa
MODPAG|2|1|0|Modalità di pagamento 1=Non frazionato; 2=Frazionato; 3=Periodico NOLEGGIO|1|1|0|Tipo veicolo Auto, Camper, Altro, Diporto, aEreo
CONTRATTO|1|18|0|Contratto con importo > 3000 Euro INVIOFE|5|8|0|Data invio definitivo dati rilevanti
DATARETT|5|8|0|Data documento rettificato
NUMRETT|1|7|0|Numero documento rettificato
ANNOFE|2|4|0|Anno invio definitivo dati rilevanti
CONTSEP|1|6|0|Contabilità separata CONTSEP|1|6|0|Contabilità separata
4 4
NUMREG| NUMREG|