Patch level : 12.00 140
Files correlati : ve010.exe fp010.exe Commento : Invio ritente e casse previdenziali
This commit is contained in:
parent
f5c520de78
commit
f9f2a94979
@ -181,7 +181,6 @@ public:
|
||||
bool is_ritenuta() const { return tipo_ritenuta() != '\0'; }
|
||||
bool is_ritenuta_fiscale() const { return tipo_ritenuta() == RITENUTA_FISCALE; }
|
||||
bool is_ritenuta_sociale() const { return tipo_ritenuta() == RITENUTA_SOCIALE; }
|
||||
const TString& codice_tipo_ritenuta() const { return get("S13").left(4); }
|
||||
const TString& tipo_riga() const { return get("S8"); }
|
||||
char genere() const;
|
||||
const TString& conto_analitico_vendite() const { return ((cod() == "ATR") || (cod() == "RSS")) ? EMPTY_STRING : get_tmp_string() = get("S1").sleft(20); }
|
||||
@ -194,8 +193,9 @@ public:
|
||||
const int codtrib() const { return get_int("S10"); }
|
||||
const TRectype& rec_caus_770() const;
|
||||
const int caus_770() const { return get_int("I6"); }
|
||||
const int quadro_770() const { return get_int("S12"); }
|
||||
const int quadroLA_770() const { return get_int("S14"); }
|
||||
const TString& quadro_770() const { return get("S12"); }
|
||||
const TString& quadroLA_770() const { return get("S14"); }
|
||||
const TString& codice_tipo_ritenuta() const { return get("S13").left(4); }
|
||||
const TString& codice_cassa_previdenziale() const { return get("S13").left(4); }
|
||||
bool sogg_a_rit() const { return get_bool("B0"); }
|
||||
bool spe_cal_rit() const { return get_bool("B1"); }
|
||||
@ -1147,7 +1147,7 @@ public:
|
||||
real spese(const TString & tipo_spesa) const;
|
||||
real prestazioni() const;
|
||||
real ritenute(const char tipo = '\0', bool lordo = false, int ndec = AUTO_DECIMALS) const;
|
||||
int find_riga_ritenute(const TSpesa_prest * sp, const char tipo = '\0', int from_row = 1);
|
||||
int find_riga_ritenute(const char tipo = '\0', int from_row = 1);
|
||||
real provvigione(bool first = true, int ndec = AUTO_DECIMALS) const;
|
||||
real valore(bool totale, bool lordo = false, int ndec = AUTO_DECIMALS) const;
|
||||
|
||||
|
||||
@ -846,17 +846,17 @@ void TDocumento::copy_data(TRectype& dst, const TRectype& src)
|
||||
// Ripristina tutti i campi chiave
|
||||
set_key(dst, provv, anno, codnum, numdoc);
|
||||
dst.init_memo(RECORD_NON_FISICO);
|
||||
if (is_riga)
|
||||
{
|
||||
dst.put(RDOC_NRIGA, nriga);
|
||||
dst.put(RDOC_IDRIGA, idriga);
|
||||
dst.zero(RDOC_MOVMAG);
|
||||
const TString& memo = src.get(RDOC_DESCEST);
|
||||
dst.put(RDOC_DESCEST, memo);
|
||||
if (is_riga)
|
||||
{
|
||||
dst.put(RDOC_NRIGA, nriga);
|
||||
dst.put(RDOC_IDRIGA, idriga);
|
||||
dst.zero(RDOC_MOVMAG);
|
||||
const TString& memo = src.get(RDOC_DESCEST);
|
||||
dst.put(RDOC_DESCEST, memo);
|
||||
|
||||
const TString& g1 = src.get(RDOC_RG1);
|
||||
const TString& g1 = src.get(RDOC_RG1);
|
||||
|
||||
dst.put(RDOC_RG1, g1);
|
||||
dst.put(RDOC_RG1, g1);
|
||||
((TRiga_documento &) dst).load_memo();
|
||||
// ((TRiga_documento &)dst).reset_fields((TAuto_variable_rectype &)dst, false);
|
||||
((TRiga_documento &)dst).set_fields((TAuto_variable_rectype &)src);
|
||||
@ -1659,7 +1659,7 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
|
||||
const TString80 codcms(get(DOC_CODCMS));
|
||||
const TString80 fascms(get(DOC_FASCMS));
|
||||
const TString80 codcos(get(DOC_CODCOSTO));
|
||||
|
||||
|
||||
/* if (get(DOC_TIPODOC).full() && tipo().causale().full())
|
||||
{
|
||||
const TCausale & caus = cached_causale(tipo().causale());
|
||||
@ -1708,7 +1708,7 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
|
||||
}
|
||||
if (r.is_evadibile() && datacons.ok()) // on 27-9-2013 was if (r.is_evadibile() && is_ordine())
|
||||
{
|
||||
docevaso &= r.is_evasa();
|
||||
docevaso &= r.is_evasa();
|
||||
const TDate dcons = r.get_date(RDOC_DATACONS);
|
||||
if (!dcons.ok())
|
||||
r.put(RDOC_DATACONS, datacons);
|
||||
@ -2278,45 +2278,45 @@ bool TDocumento::raggruppabile(const TDocumento& doc, TToken_string& campi) cons
|
||||
|
||||
void TDocumento::set_fields(TAuto_variable_rectype & rec)
|
||||
{
|
||||
if (tipo_valido())
|
||||
if (tipo_valido())
|
||||
{
|
||||
TTipo_documento& tipo_doc = (TTipo_documento&)tipo(); // first_formula() is NOT const
|
||||
const TString& tot_doc = tipo_doc.totale_doc();
|
||||
TTipo_documento& tipo_doc = (TTipo_documento&)tipo(); // first_formula() is NOT const
|
||||
const TString& tot_doc = tipo_doc.totale_doc();
|
||||
|
||||
for (const TFormula_documento* f = tipo_doc.first_formula(); f; f = tipo_doc.succ_formula())
|
||||
for (const TFormula_documento* f = tipo_doc.first_formula(); f; f = tipo_doc.succ_formula())
|
||||
{
|
||||
TExpr_documento* exp = f->expr();
|
||||
if (exp != nullptr) // Puo' succedere che sia NULL con dati incoerenti
|
||||
{
|
||||
if (tot_doc == f->name())
|
||||
if (exp != nullptr) // Puo' succedere che sia NULL con dati incoerenti
|
||||
{
|
||||
if (tot_doc == f->name())
|
||||
{
|
||||
TString16 tot_doc_netto(tot_doc);
|
||||
TString16 tot_doc_netto(tot_doc);
|
||||
tot_doc_netto.insert("_");
|
||||
|
||||
const TFixed_string netto_def(exp->string());
|
||||
TExpr_documento netto_exp(netto_def, _numexpr, this);
|
||||
TExpr_documento netto_exp(netto_def, _numexpr, this);
|
||||
|
||||
add_field(new TDocumento_variable_field(tot_doc_netto, netto_exp));
|
||||
add_field(new TDocumento_variable_field(tot_doc_netto, netto_exp));
|
||||
|
||||
if (netto_def == "IMPONIBILI()+IMPOSTE()")
|
||||
{
|
||||
TExpr_documento tot_exp("IMPONIBILI(1)+IMPOSTE(1)", _numexpr, this);
|
||||
add_field(new TDocumento_variable_field(tot_doc, tot_exp));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (netto_def == "IMPONIBILI()+IMPOSTE()")
|
||||
{
|
||||
TExpr_documento tot_exp("IMPONIBILI(1)+IMPOSTE(1)", _numexpr, this);
|
||||
add_field(new TDocumento_variable_field(tot_doc, tot_exp));
|
||||
}
|
||||
else
|
||||
{
|
||||
TExpr_documento tot_exp(format("%s + _BOLLI(%s)", (const char *) tot_doc_netto,
|
||||
(const char*)tot_doc_netto), _numexpr, this);
|
||||
add_field(new TDocumento_variable_field(tot_doc, tot_exp));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
(const char*)tot_doc_netto), _numexpr, this);
|
||||
add_field(new TDocumento_variable_field(tot_doc, tot_exp));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
exp->set_doc(this);
|
||||
add_field(new TDocumento_variable_field(f->name(), *exp));
|
||||
}
|
||||
}
|
||||
}
|
||||
add_field(new TDocumento_variable_field(f->name(), *exp));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (TVariable_field* src_field = rec.first_variable_field();
|
||||
src_field != nullptr; src_field = rec.succ_variable_field())
|
||||
@ -2325,7 +2325,7 @@ void TDocumento::set_fields(TAuto_variable_rectype & rec)
|
||||
if (src_field->expression() == nullptr)
|
||||
put(fieldname, rec.get(fieldname));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
real TDocumento::imponibile(bool spese, int ndec) const
|
||||
@ -2918,23 +2918,23 @@ real TDocumento::ritenute(const char tipo, bool lordo, int ndec) const
|
||||
return val;
|
||||
}
|
||||
|
||||
int TDocumento::find_riga_ritenute(const TSpesa_prest * sp, const char tipo, int from_row)
|
||||
int TDocumento::find_riga_ritenute(const char tipo, int from_row)
|
||||
{
|
||||
sp = nullptr;
|
||||
const int nrows = rows();
|
||||
int r = from_row;
|
||||
bool found = false;
|
||||
|
||||
for (; r <= nrows; r++)
|
||||
{
|
||||
TRiga_documento & riga = row(r);
|
||||
|
||||
if (riga.is_spese() && riga.spesa().tipo() == tipo)
|
||||
if (riga.is_spese() && riga.spesa().tipo_ritenuta() == tipo)
|
||||
{
|
||||
sp = (const TSpesa_prest *)& riga.spesa();
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return sp == nullptr ? -1 : r ;
|
||||
return found ? r : -1;
|
||||
}
|
||||
|
||||
TPagamento& TDocumento::pagamento()
|
||||
@ -3335,10 +3335,10 @@ void TDocumento::update_raee()
|
||||
|
||||
void TDocumento::update_spese_aut(TString_array & spese_aut, bool preserve_old, TSheet_field* sh, bool force)
|
||||
{
|
||||
const bool updated = get_bool(DOC_SPESEUPD);
|
||||
const bool updated = get_bool(DOC_SPESEUPD);
|
||||
|
||||
if (!force && updated)
|
||||
return;
|
||||
if (!force && updated)
|
||||
return;
|
||||
|
||||
const bool interactive = sh != NULL;
|
||||
|
||||
@ -3376,70 +3376,70 @@ void TDocumento::update_spese_aut(TString_array & spese_aut, bool preserve_old,
|
||||
|
||||
if (sp.read(s) != NOERR)
|
||||
warning_box("Codice spesa '%s' assente", (const char*)s);
|
||||
else
|
||||
else
|
||||
{
|
||||
const TString4 tipo(sp.tipo_riga());
|
||||
TRiga_documento& riga = new_row(tipo);
|
||||
|
||||
riga.put(RDOC_CODART, s);
|
||||
riga.generata();
|
||||
riga.put(RDOC_DESCR, sp.descrizione());
|
||||
if (cod_iva_cli.blank())
|
||||
riga.put(RDOC_CODIVA, sp.cod_iva());
|
||||
else
|
||||
riga.put(RDOC_CODIVA, cod_iva_cli);
|
||||
switch (sp.tipo())
|
||||
{
|
||||
case 'Q':
|
||||
{
|
||||
riga.generata();
|
||||
riga.put(RDOC_DESCR, sp.descrizione());
|
||||
if (cod_iva_cli.blank())
|
||||
riga.put(RDOC_CODIVA, sp.cod_iva());
|
||||
else
|
||||
riga.put(RDOC_CODIVA, cod_iva_cli);
|
||||
switch (sp.tipo())
|
||||
{
|
||||
case 'Q':
|
||||
{
|
||||
real qta = sp.qta();
|
||||
if (qta == ZERO)
|
||||
qta = UNO;
|
||||
riga.put("QTA", qta);
|
||||
}
|
||||
// Continua perche' e' quantita' e valore
|
||||
case 'V':
|
||||
{
|
||||
const real cambio = get_real(DOC_CAMBIO);
|
||||
const TString4 valuta = get(DOC_CODVAL);
|
||||
real prezzo = sp.prezzo();
|
||||
}
|
||||
// Continua perche' e' quantita' e valore
|
||||
case 'V':
|
||||
{
|
||||
const real cambio = get_real(DOC_CAMBIO);
|
||||
const TString4 valuta = get(DOC_CODVAL);
|
||||
real prezzo = sp.prezzo();
|
||||
|
||||
sppr_calc(sp, valuta, cambio, prezzo);
|
||||
sppr_calc(sp, valuta, cambio, prezzo);
|
||||
if (this->tipo().calcolo_lordo())
|
||||
{
|
||||
prezzo = riga.iva().lordo(prezzo, ALL_DECIMALS);
|
||||
riga.put(RDOC_PREZZOL, prezzo);
|
||||
}
|
||||
riga.put(RDOC_PREZZO, prezzo);
|
||||
riga.put(RDOC_UMQTA, sp.um());
|
||||
{
|
||||
prezzo = riga.iva().lordo(prezzo, ALL_DECIMALS);
|
||||
riga.put(RDOC_PREZZOL, prezzo);
|
||||
}
|
||||
riga.put(RDOC_PREZZO, prezzo);
|
||||
riga.put(RDOC_UMQTA, sp.um());
|
||||
}
|
||||
break;
|
||||
case 'P':
|
||||
default:
|
||||
riga.put(RDOC_QTA, sp.perc());
|
||||
break;
|
||||
case 'P':
|
||||
default:
|
||||
riga.put(RDOC_QTA, sp.perc());
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (cod_iva_cli.empty())
|
||||
riga.put(RDOC_CODIVA, sp.cod_iva());
|
||||
else
|
||||
riga.put(RDOC_CODIVA, cod_iva_cli);
|
||||
|
||||
riga.put(RDOC_CODCOSTO, sp.cdc());
|
||||
riga.put(RDOC_CODCMS, sp.cms());
|
||||
riga.put(RDOC_FASCMS, sp.fase());
|
||||
riga.cms2tipodet();
|
||||
riga.put(RDOC_CODCOSTO, sp.cdc());
|
||||
riga.put(RDOC_CODCMS, sp.cms());
|
||||
riga.put(RDOC_FASCMS, sp.fase());
|
||||
riga.cms2tipodet();
|
||||
|
||||
if (interactive)
|
||||
{
|
||||
const int nrow = sh->insert(-1, FALSE);
|
||||
riga.autoload(*sh);
|
||||
if (interactive)
|
||||
{
|
||||
const int nrow = sh->insert(-1, FALSE);
|
||||
riga.autoload(*sh);
|
||||
sh->check_row(nrow);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
put(DOC_SPESEUPD, true);
|
||||
put(DOC_SPESEUPD, true);
|
||||
}
|
||||
|
||||
void TDocumento::update_conai_qta()
|
||||
|
||||
@ -619,21 +619,20 @@ bool TDocumento::add_dati_generali(TXmlItem & dati_generali)
|
||||
dati_generali_doc.AddEnclosedText("Numero", complete_numdoc());
|
||||
|
||||
const real fiscali = ritenute('F');
|
||||
const TSpesa_prest * fiscale = nullptr;
|
||||
|
||||
for (int r = find_riga_ritenute(fiscale, 'F'); r > 0; r = find_riga_ritenute(fiscale, 'F', r + 1))
|
||||
|
||||
for (int r = find_riga_ritenute('F'); r > 0; r = find_riga_ritenute('F', r + 1))
|
||||
{
|
||||
if (fiscali != ZERO && fiscale != nullptr) // ritenuta
|
||||
const TSpesa_prest & fiscale = row(r).spesa();
|
||||
|
||||
if (fiscali != ZERO) // ritenuta
|
||||
{
|
||||
TXmlItem & ritenuta = dati_generali_doc.AddChild("DatiRitenuta");
|
||||
TString tipo;
|
||||
const TRiga_documento & rdoc = row(r);
|
||||
|
||||
tipo << fiscale->tipo_ritenuta();
|
||||
ritenuta.AddEnclosedText("TipoRitenuta", tipo);
|
||||
ritenuta.AddEnclosedTextFull("TipoRitenuta", fiscale.codice_tipo_ritenuta());
|
||||
ritenuta.AddEnclosedValue("ImportoRitenuta", rdoc.ritenuta());
|
||||
ritenuta.AddEnclosedAliquota("AliquotaRitenuta", fiscale->perc());
|
||||
ritenuta.AddEnclosedInt("CausalePagamento", fiscale->quadroLA_770());
|
||||
ritenuta.AddEnclosedAliquota("AliquotaRitenuta", fiscale.perc());
|
||||
ritenuta.AddEnclosedTextFull("CausalePagamento", fiscale.quadroLA_770());
|
||||
}
|
||||
}
|
||||
if (bolli_esenti_dovuti()) // <DatiBollo>
|
||||
@ -644,35 +643,30 @@ bool TDocumento::add_dati_generali(TXmlItem & dati_generali)
|
||||
bollo.AddEnclosedText("BolloVirtuale", "SI");
|
||||
bollo.AddEnclosedValue("ImportoBollo", bolli_es);
|
||||
}
|
||||
|
||||
const TSpesa_prest * previdenziale = nullptr;
|
||||
|
||||
for (int r = find_riga_ritenute(previdenziale, 'S'); r > 0; r = find_riga_ritenute(previdenziale, 'S',r +1))
|
||||
for (int r = find_riga_ritenute('S'); r > 0; r = find_riga_ritenute('S',r +1))
|
||||
{
|
||||
if (previdenziale != nullptr) //cassa previdenziale
|
||||
{
|
||||
const real imponibile = prestazioni();//calc_ritenuta(rdoc.doc());
|
||||
const real importo_cassa = imponibile * previdenziale->perc() / CENTO;
|
||||
const TSpesa_prest & previdenziale = row(r).spesa();
|
||||
const real imponibile = prestazioni();//calc_ritenuta(rdoc.doc());
|
||||
const real importo_cassa = imponibile * previdenziale.perc() / CENTO;
|
||||
|
||||
// Inserisco il tutto nei dati riepilogo
|
||||
TXmlItem & cassa = dati_generali_doc.AddChild("DatiCassaPrevidenziale");
|
||||
TXmlItem & cassa = dati_generali_doc.AddChild("DatiCassaPrevidenziale");
|
||||
|
||||
cassa.AddEnclosedText("TipoCassa", previdenziale->codice_cassa_previdenziale());
|
||||
cassa.AddEnclosedReal("AlCassa", previdenziale->perc());
|
||||
cassa.AddEnclosedValue("ImportoContributoCassa", importo_cassa);
|
||||
cassa.AddEnclosedValue("ImponibileCassa", imponibile); // qui
|
||||
cassa.AddEnclosedText("TipoCassa", previdenziale.codice_cassa_previdenziale());
|
||||
cassa.AddEnclosedReal("AlCassa", previdenziale.perc());
|
||||
cassa.AddEnclosedValue("ImportoContributoCassa", importo_cassa);
|
||||
cassa.AddEnclosedValue("ImponibileCassa", imponibile); // qui
|
||||
|
||||
const TCodiceIVA & i = cached_codIVA(previdenziale->cod_iva());
|
||||
const TCodiceIVA & i = cached_codIVA(previdenziale.cod_iva());
|
||||
|
||||
cassa.AddEnclosedAliquota("AliquotaIVA", i.percentuale());
|
||||
if (previdenziale->sogg_a_rit())
|
||||
cassa.AddEnclosedText("Ritenuta", "SI");
|
||||
cassa.AddEnclosedText("Natura", i.natura());
|
||||
cassa.AddEnclosedAliquota("AliquotaIVA", i.percentuale());
|
||||
if (previdenziale.sogg_a_rit())
|
||||
cassa.AddEnclosedText("Ritenuta", "SI");
|
||||
cassa.AddEnclosedText("Natura", i.natura());
|
||||
|
||||
TString rifamm = previdenziale->descrizione().sleft(30);
|
||||
TString rifamm = previdenziale.descrizione().sleft(30);
|
||||
|
||||
cassa.AddEnclosedTextFull("RiferimentoAmministrazione", rifamm.trim());
|
||||
}
|
||||
cassa.AddEnclosedTextFull("RiferimentoAmministrazione", rifamm.trim());
|
||||
}
|
||||
/*if (false) //sconto qui Lo sconto in testata stato disabilitato in quanto su Campo influenza solo le righe merci mentre dovrebbe modificare tutte le righe
|
||||
{
|
||||
@ -1194,20 +1188,20 @@ const TString& TDocumento::descrizione(const TRiga_documento& rdoc)
|
||||
{
|
||||
if (rdoc.get_bool(RDOC_DESCLUNGA))
|
||||
{
|
||||
TString& tmp = get_tmp_string();
|
||||
TString& tmp = get_tmp_string();
|
||||
|
||||
tmp << rdoc.get(RDOC_DESCR) << rdoc.get(RDOC_DESCEST);
|
||||
|
||||
tmp.replace('\n', ' ');
|
||||
tmp.strip_double_spaces();
|
||||
tmp.trim();
|
||||
if (tmp.len() > 1000)
|
||||
{
|
||||
TString err;
|
||||
tmp.replace('\n', ' ');
|
||||
tmp.strip_double_spaces();
|
||||
tmp.trim();
|
||||
if (tmp.len() > 1000)
|
||||
{
|
||||
TString err;
|
||||
|
||||
err << "Il documento " << rdoc.doc().anno() << " " << rdoc.doc().codice_numerazione().codice() << " " << rdoc.doc().numero() << " ha la riga numero " << rdoc.numero() << " pi lunga di quanto supportato dal formato dell'agenzia delle entrate, verr troncata a 1000 caratteri";
|
||||
get_xml_log()->log(1, err);
|
||||
}
|
||||
get_xml_log()->log(1, err);
|
||||
}
|
||||
return tmp.left(1000);
|
||||
}
|
||||
return rdoc.get(RDOC_DESCR);
|
||||
@ -2064,8 +2058,8 @@ bool TDocumento::get_bank(TTipo_pag tipo, TString& iban, TString& abi, TString&
|
||||
if (tipo == _bonfico)
|
||||
return get_bank_presentazione(iban, abi, cab, istituto);
|
||||
else
|
||||
if (tipo == _ric_ban || tipo == _rid)
|
||||
return get_bank_appoggio(iban, abi, cab, istituto);
|
||||
if (tipo == _ric_ban || tipo == _rid)
|
||||
return get_bank_appoggio(iban, abi, cab, istituto);
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -2091,13 +2085,13 @@ bool TDocumento::get_bank_presentazione(TString& iban, TString& abi, TString& ca
|
||||
key.add(codcf());
|
||||
key.add("N");
|
||||
key.add(1);
|
||||
const TRectype& cfban = cache().get(LF_CFBAN, key);
|
||||
const TRectype& cfban = cache().get(LF_CFBAN, key);
|
||||
if (!cfban.empty())
|
||||
{
|
||||
abi = cfban.get(CFBAN_ABI);
|
||||
cab = cfban.get(CFBAN_CAB);
|
||||
found = abi.full() && cab.full();
|
||||
iban = cfban.get(CFBAN_IBAN);
|
||||
iban = cfban.get(CFBAN_IBAN);
|
||||
if (found && iban.blank())
|
||||
get_bnp_iban(abi, cab, -1, iban);
|
||||
}
|
||||
@ -2130,13 +2124,13 @@ bool TDocumento::get_bank_appoggio(TString& iban, TString& abi, TString& cab, TS
|
||||
key.add(codcf());
|
||||
key.add("V");
|
||||
key.add(1);
|
||||
const TRectype& cfban = cache().get(LF_CFBAN, key);
|
||||
const TRectype& cfban = cache().get(LF_CFBAN, key);
|
||||
if (!cfban.empty())
|
||||
{
|
||||
const TString& abi_cf = cfban.get(CFBAN_ABI);
|
||||
const TString& cab_cf = cfban.get(CFBAN_CAB);
|
||||
const bool found_cf = abi_cf.full() && cab_cf.full();
|
||||
iban = cfban.get(CFBAN_IBAN);
|
||||
iban = cfban.get(CFBAN_IBAN);
|
||||
if (found_cf && iban.blank())
|
||||
get_bnp_iban(abi_cf, cab_cf, -1, iban);
|
||||
}
|
||||
@ -2253,33 +2247,33 @@ bool TDocumento::add_allegati(TXmlItem & body)
|
||||
|
||||
if (get_fp_bool_var(FP_ALLEG_FAT))
|
||||
{
|
||||
if (!tipo().main_print_profile(rep, 2))
|
||||
get_xml_log()->log(1, "Impossibile generare la fattura, non disponibile un profilo di stampa per questo tipo documento!");
|
||||
else
|
||||
{
|
||||
//ve1 -2 {CODNUM} {ANNO} {PROVV} {NDOC}(-{ANDOC}) {TIPO_ELABORAZIONE} {TIPO_STAMPA} {NUM_COPIE} {ARCHIVIAZIONE}
|
||||
// Costruisco la chiamata
|
||||
TString commandline = "ve011 -2 ";
|
||||
|
||||
commandline << get(DOC_CODNUM) << ' ' << get(DOC_ANNO) << ' ' << get(DOC_PROVV) << ' ' << get(DOC_NDOC) << " X P 1 D"; // X: stampa su disco, P: provvisorio, 1: 1 copia, D: disabilita archiviazione
|
||||
|
||||
TExternal_app interattivo(commandline);
|
||||
|
||||
if (interattivo.run() != NOERR)
|
||||
{
|
||||
TString msgerr = "Fallita generazione PDF documento ";
|
||||
msgerr << get(DOC_CODNUM) << ' ' << get(DOC_ANNO) << ' ' << get(DOC_PROVV) << ' ' << get(DOC_NDOC);
|
||||
error_box(msgerr);
|
||||
}
|
||||
if (!tipo().main_print_profile(rep, 2))
|
||||
get_xml_log()->log(1, "Impossibile generare la fattura, non disponibile un profilo di stampa per questo tipo documento!");
|
||||
else
|
||||
{
|
||||
TFilename pdf; pdf.tempdir();
|
||||
pdf << SLASH << get(DOC_ANNO) << '_' << get(DOC_CODNUM) << '_' << get(DOC_NDOC) << ".pdf";
|
||||
if (!pdf.exist() && !yesno_box("Attenzione! Non stato possibile creare il pdf, continuare?"))
|
||||
return false;
|
||||
add_allegato(body, pdf, "Fattura di cortesia");
|
||||
}
|
||||
}
|
||||
//ve1 -2 {CODNUM} {ANNO} {PROVV} {NDOC}(-{ANDOC}) {TIPO_ELABORAZIONE} {TIPO_STAMPA} {NUM_COPIE} {ARCHIVIAZIONE}
|
||||
// Costruisco la chiamata
|
||||
TString commandline = "ve011 -2 ";
|
||||
|
||||
commandline << get(DOC_CODNUM) << ' ' << get(DOC_ANNO) << ' ' << get(DOC_PROVV) << ' ' << get(DOC_NDOC) << " X P 1 D"; // X: stampa su disco, P: provvisorio, 1: 1 copia, D: disabilita archiviazione
|
||||
|
||||
TExternal_app interattivo(commandline);
|
||||
|
||||
if (interattivo.run() != NOERR)
|
||||
{
|
||||
TString msgerr = "Fallita generazione PDF documento ";
|
||||
msgerr << get(DOC_CODNUM) << ' ' << get(DOC_ANNO) << ' ' << get(DOC_PROVV) << ' ' << get(DOC_NDOC);
|
||||
error_box(msgerr);
|
||||
}
|
||||
else
|
||||
{
|
||||
TFilename pdf; pdf.tempdir();
|
||||
pdf << SLASH << get(DOC_ANNO) << '_' << get(DOC_CODNUM) << '_' << get(DOC_NDOC) << ".pdf";
|
||||
if (!pdf.exist() && !yesno_box("Attenzione! Non stato possibile creare il pdf, continuare?"))
|
||||
return false;
|
||||
add_allegato(body, pdf, "Fattura di cortesia");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TToken_string allegati(get(DOC_CARTACEI), '\n');
|
||||
@ -2474,7 +2468,7 @@ bool TDocumento::generate_xml(TLog_report * log)
|
||||
if (update)
|
||||
{
|
||||
put(DOC_PRG_INVIO, prg);
|
||||
set_fp_var(FP_PRG_INVIO, prg);
|
||||
set_fp_var(FP_PRG_INVIO, prg);
|
||||
put(DOC_XML_NAME, fname);
|
||||
}
|
||||
if (get(DOC_STATO_SDI).blank())
|
||||
@ -3119,7 +3113,6 @@ bool TDocumento::get_dati_generali(TXmlItem & dati_generali, real & totale_imp)
|
||||
put(DOC_MESELIQ, datarif.month());
|
||||
|
||||
const real fiscali = ritenute('F');
|
||||
const TSpesa_prest * fiscale = nullptr;
|
||||
TXmlItem * ritenuta = dati_generali_doc->FindFirstChild("DatiRitenuta");
|
||||
int child = 0;
|
||||
|
||||
@ -3127,16 +3120,14 @@ bool TDocumento::get_dati_generali(TXmlItem & dati_generali, real & totale_imp)
|
||||
{
|
||||
int riga_ritfisc = -1;
|
||||
|
||||
for (int r = find_riga_ritenute(fiscale, 'F'); riga_ritfisc < 0 && r > 0; r = find_riga_ritenute(fiscale, 'F', r + 1))
|
||||
for (int r = find_riga_ritenute('F'); riga_ritfisc < 0 && r > 0; r = find_riga_ritenute('F', r + 1))
|
||||
{
|
||||
if (fiscale != nullptr) // ritenuta
|
||||
{
|
||||
TString tipo;
|
||||
const TRiga_documento & rdoc = row(r);
|
||||
const TSpesa_prest & fiscale = row(r).spesa();
|
||||
TString tipo;
|
||||
const TRiga_documento & rdoc = row(r);
|
||||
|
||||
if (ritenuta->GetEnclosedText("TipoRitenuta") == fiscale->codice_tipo_ritenuta())
|
||||
riga_ritfisc = r;
|
||||
}
|
||||
if (ritenuta->GetEnclosedText("TipoRitenuta") == fiscale.codice_tipo_ritenuta())
|
||||
riga_ritfisc = r;
|
||||
}
|
||||
if (riga_ritfisc < 0)
|
||||
{
|
||||
@ -3181,7 +3172,6 @@ bool TDocumento::get_dati_generali(TXmlItem & dati_generali, real & totale_imp)
|
||||
}
|
||||
|
||||
TXmlItem * cassaprev = dati_generali_doc->FindFirstChild("DatiCassaPrevidenziale");
|
||||
const TSpesa_prest * cassa = nullptr;
|
||||
|
||||
child = 0;
|
||||
for (TXmlItem * cassaprev = dati_generali_doc->FindChild("DatiCassaPrevidenziale", child); cassaprev != nullptr; cassaprev = dati_generali_doc->FindChild("DatiCassaPrevidenziale", child))
|
||||
@ -3194,16 +3184,15 @@ bool TDocumento::get_dati_generali(TXmlItem & dati_generali, real & totale_imp)
|
||||
|
||||
const bool soggrit = strsoggrit == "si";
|
||||
|
||||
for (int r = find_riga_ritenute(cassa, 'S'); riga_ritsoc < 0 && r > 0; r = find_riga_ritenute(cassa, 'S', r + 1))
|
||||
for (int r = find_riga_ritenute('S'); riga_ritsoc < 0 && r > 0; r = find_riga_ritenute('S', r + 1))
|
||||
{
|
||||
if (cassa != nullptr) // ritenuta
|
||||
{
|
||||
TString tipo;
|
||||
const TRiga_documento & rdoc = row(r);
|
||||
const TSpesa_prest & cassa = row(r).spesa();
|
||||
TString tipo;
|
||||
const TRiga_documento & rdoc = row(r);
|
||||
|
||||
if (codicesdi == cassa.codice_cassa_previdenziale())
|
||||
riga_ritsoc = r;
|
||||
|
||||
if (codicesdi == cassa->codice_cassa_previdenziale())
|
||||
riga_ritsoc = r;
|
||||
}
|
||||
}
|
||||
if (riga_ritsoc < 0)
|
||||
{
|
||||
@ -3262,7 +3251,6 @@ bool TDocumento::get_dati_generali(TXmlItem & dati_generali, real & totale_imp)
|
||||
if (codiva.blank())
|
||||
codiva = sp->cod_iva();
|
||||
}
|
||||
|
||||
riga.put(RDOC_DESCR, sp->descrizione());
|
||||
riga.put(RDOC_UMQTA, sp->um());
|
||||
riga.put(RDOC_CODIVA, codiva);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user