Patch level : 12.0 412
Files correlati : Commento : - Sistemati tracciati tabelle - Tolti tipi movimento non supportati - Aggiornata grafica per togliere i tipi movimento - Sistemata decodifica tipo movimento - Aggiornata funzione var2str con nuove colonne dei prezzi - Creata funzione filtro per le righe iva da leggere - Tolta gestione modifica in "Autofattura" - Aggiunto controllo se sono stati modificati dei filtri quando si preme "Elabora" - Tolti i calcoli per stabilire la natura - Rifatta funzione per il reverse charge - Aggiunta durante la creazione il riempimento con un record per TFNUM00F (altrimenti l'AS piange poverino) - sistemata funzione getBody(), adesso accetta un booleano per non incrementare ogni volta la chiave - Sistemati tracciati tff0200f, tff0400f, tff0700f, tff2200f git-svn-id: svn://10.65.10.50/branches/R_10_00@23883 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
2d0f23a121
commit
210cf6dc75
@ -30,24 +30,13 @@ TString getTipoDoc(int id)
|
||||
case B_TIPO_AUTOFATT:
|
||||
ret = "AF";
|
||||
break;
|
||||
case B_TIPO_BOLLADOG:
|
||||
ret = "BD";
|
||||
break;
|
||||
case B_TIPO_CORRNINC:
|
||||
ret = "CN";
|
||||
break;
|
||||
case B_TIPO_CORR:
|
||||
ret = "CR";
|
||||
break;
|
||||
case B_TIPO_FATTACQ:
|
||||
ret = "FA";
|
||||
break;
|
||||
case B_TIPO_FATTFISC:
|
||||
ret = "FF";
|
||||
break;
|
||||
case B_TIPO_FATTSC:
|
||||
ret = "FS";
|
||||
break;
|
||||
|
||||
case B_TIPO_FATTVEN:
|
||||
ret = "FV";
|
||||
break;
|
||||
@ -57,9 +46,26 @@ TString getTipoDoc(int id)
|
||||
case B_TIPO_NOTD:
|
||||
ret = "ND";
|
||||
break;
|
||||
case B_TIPO_STORDOC:
|
||||
ret = "ST";
|
||||
break;
|
||||
/*
|
||||
case B_TIPO_BOLLADOG:
|
||||
ret = "BD";
|
||||
break;
|
||||
case B_TIPO_CORRNINC:
|
||||
ret = "CN";
|
||||
break;
|
||||
case B_TIPO_CORR:
|
||||
ret = "CR";
|
||||
break;
|
||||
case B_TIPO_FATTSC:
|
||||
ret = "FS";
|
||||
break;
|
||||
case B_TIPO_RICFIS:
|
||||
ret = "RF";
|
||||
break;
|
||||
|
||||
case B_TIPO_RICFISNI:
|
||||
ret = "RN";
|
||||
break;
|
||||
@ -69,8 +75,9 @@ TString getTipoDoc(int id)
|
||||
case B_TIPO_SCONTNI:
|
||||
ret = "SN";
|
||||
break;
|
||||
case B_TIPO_STORDOC:
|
||||
ret = "ST";
|
||||
*/
|
||||
default:
|
||||
ret = "ERR";
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
@ -80,19 +87,19 @@ int getTipoDoc(TString id)
|
||||
{
|
||||
int ret = -1;
|
||||
if(id == "AF") ret = B_TIPO_AUTOFATT;
|
||||
else if(id == "BD") ret = B_TIPO_BOLLADOG;
|
||||
else if(id == "CN") ret = B_TIPO_CORRNINC;
|
||||
else if(id == "CR") ret = B_TIPO_CORR;
|
||||
// else if(id == "BD") ret = B_TIPO_BOLLADOG;
|
||||
// else if(id == "CN") ret = B_TIPO_CORRNINC;
|
||||
// else if(id == "CR") ret = B_TIPO_CORR;
|
||||
else if(id == "FA") ret = B_TIPO_FATTACQ;
|
||||
else if(id == "FF") ret = B_TIPO_FATTFISC;
|
||||
else if(id == "FS") ret = B_TIPO_FATTSC;
|
||||
// else if(id == "FS") ret = B_TIPO_FATTSC;
|
||||
else if(id == "FV") ret = B_TIPO_FATTVEN;
|
||||
else if(id == "NC") ret = B_TIPO_NOTC;
|
||||
else if(id == "ND") ret = B_TIPO_NOTD;
|
||||
else if(id == "RF") ret = B_TIPO_RICFIS;
|
||||
else if(id == "RN") ret = B_TIPO_RICFISNI;
|
||||
else if(id == "SC") ret = B_TIPO_SCONT;
|
||||
else if(id == "SN") ret = B_TIPO_SCONTNI;
|
||||
// else if(id == "RF") ret = B_TIPO_RICFIS;
|
||||
// else if(id == "RN") ret = B_TIPO_RICFISNI;
|
||||
// else if(id == "SC") ret = B_TIPO_SCONT;
|
||||
// else if(id == "SN") ret = B_TIPO_SCONTNI;
|
||||
else if(id == "ST") ret = B_TIPO_STORDOC;
|
||||
return ret;
|
||||
}
|
||||
@ -157,9 +164,12 @@ static const char* decodTipo(TToken_string* strarr)
|
||||
{
|
||||
TRectype mov = cache().get(LF_MOV, strarr->get(_numero));
|
||||
TCausale caus(mov.get("CODCAUS"), mov.get_int("ANNOIVA"));
|
||||
switch(caus.tipomov())
|
||||
TString tipodoc; tipodoc << strarr->get(_codnum);
|
||||
// Le autofatture possono essere solo di tipo TDO1
|
||||
if(tipodoc == "AF")
|
||||
return "TD01";
|
||||
else if(tipodoc == "FA" || tipodoc == "FV")
|
||||
{
|
||||
case tm_fattura:
|
||||
// Potrebbe essere normale o intra
|
||||
if(!caus.intra())
|
||||
return "TD01";
|
||||
@ -211,16 +221,13 @@ static const char* decodTipo(TToken_string* strarr)
|
||||
else
|
||||
return "TD10";
|
||||
}
|
||||
break;
|
||||
case tm_nota_credito:
|
||||
if(caus.tipodoc() == "NC")
|
||||
return "TD04";
|
||||
else
|
||||
return "TD05";
|
||||
break;
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
else if(tipodoc == "NC")
|
||||
return "TD04";
|
||||
else if(tipodoc == "ND")
|
||||
return "TD05";
|
||||
else
|
||||
return tipodoc;
|
||||
}
|
||||
|
||||
/* Salvo il record modificato in TFCustom */
|
||||
@ -344,10 +351,11 @@ const TString& TTrFa_record::var2str(const TString& fldname, const TVariant& var
|
||||
const TFieldtypes vt = var.type();
|
||||
if (vt == _realfld)
|
||||
{
|
||||
const TCurrency v(var.as_real(), "", ZERO, fldname.find("PRZ")>0 || fldname.find("PREZZO")>0);
|
||||
const TCurrency v(var.as_real(), "", ZERO, fldname.find("IMPONIBILE")>0 || fldname.find("IMPOSTA")>0);
|
||||
TString& tmp = get_tmp_string();
|
||||
tmp << '\'' << v.string() << '\''; tmp.replace(',','.');
|
||||
return tmp;
|
||||
tmp << '\'' << v.string() << '\'';
|
||||
tmp.replace(',','.');
|
||||
return tmp;
|
||||
}
|
||||
if (vt == _datefld)
|
||||
{
|
||||
@ -558,13 +566,11 @@ TRectype TTrFa_cursors::_next(return_code& code, TString& tipocf, TString& codcf
|
||||
{
|
||||
// Controllo se ho cambiato movimento
|
||||
_newMov = numMov != c_rmoviva->get("23.NUMREG").as_string();
|
||||
codiva = c_rmoviva->get("25.CODIVA").as_string();
|
||||
}
|
||||
} // Ciclo finchè non trovo un nuovo movimento o trovo cod IVA già presi da cust
|
||||
while(TCodiceIVA(codiva).tipo() == "NS" || (!_newMov && _alqCust.get_pos(codiva) > -1));
|
||||
while(!checkRecord(c_rmoviva) || (!_newMov && _alqCust.get_pos(codiva) > -1));
|
||||
}
|
||||
|
||||
|
||||
// Se ho cambiato movimento ritorno, leggerò poi al prossimo giro
|
||||
if(_newMov)
|
||||
{
|
||||
@ -586,7 +592,7 @@ TRectype TTrFa_cursors::_next(return_code& code, TString& tipocf, TString& codcf
|
||||
retRec.put("CODCF", c_rmoviva->get("23.CODCF").as_string());
|
||||
retRec.put("OCCAS", c_rmoviva->get("23.OCFPI").as_string());
|
||||
retRec.put("TIPODOC", c_rmoviva->get("23.TIPODOC").as_string());
|
||||
retRec.put("NUMDOC", c_rmoviva->get("23.NUMDOC").as_int());
|
||||
retRec.put("NUMDOC", c_rmoviva->get("23.NUMDOC").as_string());
|
||||
retRec.put("DATAREG", c_rmoviva->get("23.DATAREG").as_date());
|
||||
retRec.put("DATADOC", c_rmoviva->get("23.DATADOC").as_date());
|
||||
retRec.put("IMPONIBILE", c_rmoviva->get("25.IMPONIBILE").as_real());
|
||||
@ -602,6 +608,31 @@ TRectype TTrFa_cursors::_next(return_code& code, TString& tipocf, TString& codcf
|
||||
return retRec;
|
||||
}
|
||||
|
||||
/* Utilizzo questa funzione per filtrare al meglio i record, tutti i casi che devo omettere verranno rilevati e ritorneranno false
|
||||
* Nota bene: viene sfruttato un puntatore di TISA_Recordset per non creare nuovi oggetti e velocizzare la chiamata
|
||||
* a questo punto il programma non ha ancora creato un record di $trasfatt con i dati che mi interessano
|
||||
*/
|
||||
bool TTrFa_cursors::checkRecord(TISAM_recordset* rec)
|
||||
{
|
||||
TString codiva = rec->get("25.CODIVA").as_string();
|
||||
|
||||
// Tolgo i non soggetti
|
||||
TCodiceIVA cod(codiva);
|
||||
if(cod.tipo() == "NS")
|
||||
return false;
|
||||
|
||||
// Clienti
|
||||
if(rec->get("23.TIPO").as_string() == "C")
|
||||
{
|
||||
// Tolgo tutti i movimenti di sola IVA e in reverse charge o di tipo 3 (Acquisto di beni e servizi di soggetti non residenti)
|
||||
TCausale caus(rec->get("23.CODCAUS").as_string());
|
||||
if(caus.soloiva() && (caus.reverse_charge() || caus.regime_speciale() == 3))
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int TTrFa_cursors::updateFilters(const char tipocf, const long codcf, TDate dal, TDate al, int cod)
|
||||
{
|
||||
TString query = "USE RMOVIVA\n";
|
||||
@ -755,37 +786,6 @@ bool TTrFa_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case A_AUTOFATT:
|
||||
if(e == fe_modify)
|
||||
{
|
||||
TString piva, cofi;
|
||||
// Se ha impostato un autofattura metto cf e piva dell'azienda
|
||||
if(o.get() == "X")
|
||||
{
|
||||
TString key; key << prefix().firm().get("TIPOA") << "|" << prefix().firm().get("CODANAGR");
|
||||
piva = cache().get(LF_ANAG, key, "PAIV");
|
||||
cofi = cache().get(LF_ANAG, key, "COFI");
|
||||
}
|
||||
// Altrimenti provo a prenderli da clifo
|
||||
else
|
||||
{
|
||||
TString tipocf, codcf;
|
||||
// Controllo se è un cliente occasionale
|
||||
tipocf = "O";
|
||||
codcf = o.mask().get(A_OCFPI);
|
||||
if(codcf.empty())
|
||||
{
|
||||
tipocf = o.mask().get(A_TIPOCF);
|
||||
codcf = o.mask().get(A_CODCF);
|
||||
}
|
||||
TRectype app = getCli(tipocf, codcf);
|
||||
piva = app.get("PAIV");
|
||||
cofi = app.get("COFI");
|
||||
}
|
||||
o.mask().set(A_PAIV, piva);
|
||||
o.mask().set(A_COFI, cofi);
|
||||
}
|
||||
break;
|
||||
case A_ALIQUOTA:
|
||||
if(e == fe_modify)
|
||||
{
|
||||
@ -1062,9 +1062,16 @@ bool TTrFa_mask::checkRec(TPrinter* stampa, TToken_string rec)
|
||||
bool TTrFa_mask::checkNotEmpty()
|
||||
{
|
||||
TSheet_field& sheet = sfield(F_RIGHE);
|
||||
TString msg("La tabella dei movimenti è vuota, vuoi caricarla con i filtri selezionati?");
|
||||
if(sheet.empty() && yesno_box(msg))
|
||||
TString msg;
|
||||
|
||||
if(sheet.empty())
|
||||
msg = "La tabella dei movimenti è vuota, vuoi caricarla con i filtri selezionati?";
|
||||
else if(_filter_changed)
|
||||
msg = "I filtri sono stati cambiati, vuoi ricaricare la tabella con i nuovi filtri selezionati?";
|
||||
|
||||
if(msg.full() && yesno_box(msg))
|
||||
{
|
||||
_filter_changed = false;
|
||||
load_sheet();
|
||||
}
|
||||
return sheet.full();
|
||||
@ -1132,7 +1139,7 @@ void TTrFa_mask::load_sheet()
|
||||
row->add(cli.get("CODRFSO"), _rfso); // Codice RF/SO
|
||||
row->add(getRFSO(cli.get("CODRFSO")), _ragsocrfso); // Ragione Sociale RF/SO
|
||||
row->add(movimento.get("TIPODOC"), _codnum); // Tipo documento
|
||||
row->add(movimento.get_long("NUMDOC"), _numdoc); // Numero documento
|
||||
row->add(movimento.get("NUMDOC"), _numdoc); // Numero documento
|
||||
row->add(movimento.get_date("DATADOC"), _datadoc); // Data documento
|
||||
row->add(natura(iva), _natura); // NATURA!
|
||||
row->add(iva, _aliquota); // Codice aliquota!
|
||||
@ -1179,29 +1186,6 @@ const char * TTrFa_mask::natura(const TString& codiva) const
|
||||
TString & natura = get_tmp_string(4);
|
||||
|
||||
natura = ai.get("S12");
|
||||
if(natura.blank())
|
||||
{
|
||||
const int tipo_iva11 = ai.get_int("S2");
|
||||
const bool revcharge = tipo_iva11 >= 31 && tipo_iva11 <= 38;
|
||||
const TString& tipo = ai.get("S1");
|
||||
const int tipo_vendite = ai.get_int("S7");
|
||||
|
||||
// N1 escluse ex art 15
|
||||
if (tipo_vendite == 5)
|
||||
natura = "N5"; // regime del margine
|
||||
else
|
||||
if (revcharge)
|
||||
natura = "N6"; // Inversione contabile (REVERSE CHARGE)
|
||||
else
|
||||
if (tipo == "NS")
|
||||
natura = "N2"; // Non soggetto
|
||||
else
|
||||
if (tipo == "NI")
|
||||
natura = "N3"; // Non imponibile
|
||||
else
|
||||
if (tipo == "ES")
|
||||
natura = "N4"; // Esente
|
||||
}
|
||||
return natura;
|
||||
}
|
||||
|
||||
@ -1213,8 +1197,10 @@ real TTrFa_mask::get_IVA(const TString& codiva) const
|
||||
|
||||
TString TTrFa_mask::revCharge(TString numreg) const
|
||||
{
|
||||
TString key = numreg; key << "|1";
|
||||
return cache().get(LF_RMOV, key).empty() ? "X" : "";
|
||||
// Controllo se la causale ha il reverse charge, se il cliente non l'ha impostata giusta sono ARAZZI suoi
|
||||
TString key = numreg;
|
||||
TCausale caus(cache().get(LF_MOV, key, "CODCAUS"));
|
||||
return caus.reverse_charge() ? "X" : "";
|
||||
}
|
||||
|
||||
TString TTrFa_mask::getRFSO(TString codrfso) const
|
||||
@ -1440,7 +1426,14 @@ bool TTrFa_app::createDB()
|
||||
ok = create_table(TFF, table);
|
||||
}
|
||||
}
|
||||
|
||||
if(ok)
|
||||
{
|
||||
// Aggiungo il valore di default in TFNUM
|
||||
TTrFa_record tfnum("TFNUM00F");
|
||||
tfnum.set("PJNKEY", "00001");
|
||||
tfnum.set("PJNINV", "0000000000");
|
||||
ok = tfnum.insert();
|
||||
}
|
||||
if (ok)
|
||||
xvt_sql_commit(_db);
|
||||
else
|
||||
@ -1541,7 +1534,7 @@ TString TTrFa_app::getHeader(TToken_string* strarr)
|
||||
return header;
|
||||
}
|
||||
|
||||
TString TTrFa_app::getBody(TToken_string* strarr)
|
||||
TString TTrFa_app::getBody(TToken_string* strarr, bool add)
|
||||
{
|
||||
/*
|
||||
// Chiave body (20): TIPODOC(2) + DATADOC[YEAR](4) + NUMDOC(7) + AAA(3) + CODALIQUOTA(4)
|
||||
@ -1556,7 +1549,8 @@ TString TTrFa_app::getBody(TToken_string* strarr)
|
||||
TString keyMap; keyMap << strarr->get_char(_tipocf) << strarr->get_int(_codcf);
|
||||
|
||||
clifoDoc app = mCliDoc[keyMap];
|
||||
app.countDoc += 1;
|
||||
if(add)
|
||||
app.countDoc += 1;
|
||||
mCliDoc[keyMap] = app;
|
||||
|
||||
TString body; body.format("%010d%010d", app.contCliFo, app.countDoc);
|
||||
@ -1645,8 +1639,9 @@ bool TTrFa_app::tff0200(TString key)
|
||||
tff0200f.set("P2_SEDENRCIVICO", _ditta.civico_residenza());
|
||||
tff0200f.set("P2_SEDECAP", _ditta.CAP_residenza());
|
||||
tff0200f.set("P2_SEDECOMUNE", _ditta.comune_residenza());
|
||||
tff0200f.set("P2_SEDEPROV", _ditta.provincia_residenza());
|
||||
tff0200f.set("P2_SEDENAZ", _ditta.localita_residenza());
|
||||
if(_ditta.italiano()) // Campo ritornerebbe "EE" se estero
|
||||
tff0200f.set("P2_SEDEPROV", _ditta.provincia_residenza());
|
||||
tff0200f.set("P2_SEDENAZ", _ditta.stato_residenza());
|
||||
|
||||
myrfso = "";
|
||||
if(haveRFSO(myrfso))
|
||||
@ -1715,8 +1710,12 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
|
||||
continue;
|
||||
|
||||
TAnagrafica cedeprest(LF_CLIFO, strarr->get_char(_tipocf), strarr->get_long(_codcf));
|
||||
TRectype r_cedeprest = cache().get(LF_CLIFO, TString(strarr->get_char(_tipocf)) << "|" << strarr->get_long(_codcf));
|
||||
TString statocli = cache().get("%STA", r_cedeprest.get("STATOCF"), "S2");
|
||||
TString keyCedPrest; keyCedPrest << strarr->get_char(_tipocf) << "|" << strarr->get_long(_codcf);
|
||||
TRectype r_cedeprest = cache().get(LF_CLIFO, keyCedPrest);
|
||||
TString statocli = cache().get("%STA", r_cedeprest.get("STATOCF"), "S10");
|
||||
// Se rimane vuoto è italiano
|
||||
if(statocli == "")
|
||||
statocli = "IT";
|
||||
|
||||
TTrFa_record tff0400f("TFF0400F");
|
||||
tff0400f.set("P4_KEYPRGINVIO", getKey(strarr));
|
||||
@ -1786,13 +1785,16 @@ bool TTrFa_app::tff0700(TSheet_field& sheet)
|
||||
// Mentre per i clienti è una porcata per le fatture non posso fare altrimenti, potrebbe essere che i clienti mettono righe in fondo customizzate spezzando fatture
|
||||
TToken_string fattSent = "";
|
||||
bool ok = true;
|
||||
TProgress_monitor p(sheet.items(),"Caricamento Fatture");
|
||||
TProgress_monitor p(sheet.items(), "Caricamento Fatture");
|
||||
|
||||
TString oldKey = "";
|
||||
int numRiga;
|
||||
|
||||
FOR_EACH_SHEET_ROW(sheet, r, strarr)
|
||||
{
|
||||
if(!p.add_status())
|
||||
return false;
|
||||
if(strcmp(strarr->get(_invio), "X") != 0) continue; // Non mi interessa se non è selezionata
|
||||
|
||||
|
||||
TString checkFatt; checkFatt << strarr->get_char(_tipocf) << strarr->get_long(_codcf) << strarr->get(_numdoc);
|
||||
if(fattSent.get_pos(checkFatt) < 0)
|
||||
@ -1806,17 +1808,25 @@ bool TTrFa_app::tff0700(TSheet_field& sheet)
|
||||
tff0700f.set("P7_KEYBODYFATT", getBody(strarr));
|
||||
|
||||
tff0700f.set("P7_TIPODOC", decodTipo(strarr));
|
||||
tff0700f.set("P7_DATA", strarr->get(_datadoc));
|
||||
tff0700f.set("P7_DATA", toDate(strarr->get(_datadoc)));
|
||||
tff0700f.set("P7_NUMERO", strarr->get(_numdoc));
|
||||
|
||||
tff0700f.set("P7_DATAREG", toDate(strarr->get(_datareg))); // Obbligatoria nei DTR
|
||||
tff0700f.set("P7_GESTIONE", "");
|
||||
ok = tff0700f.insert();
|
||||
|
||||
// Controllo dopo l'inserimento del tff0700f
|
||||
if(!ok) return false;
|
||||
}
|
||||
// In qualsiasi caso va messa la riga
|
||||
ok = tff2200(strarr);
|
||||
// In qualsiasi caso va messa la riga ma prima elaboro il numero della riga!
|
||||
TString newKey = getBody(strarr, false);
|
||||
if(oldKey != newKey)
|
||||
{
|
||||
numRiga = 1;
|
||||
oldKey = newKey;
|
||||
}
|
||||
else
|
||||
numRiga++;
|
||||
ok = tff2200(strarr, numRiga);
|
||||
|
||||
// E dopo l'inserimento del tff2200
|
||||
if(!ok) return false;
|
||||
@ -1824,15 +1834,17 @@ bool TTrFa_app::tff0700(TSheet_field& sheet)
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TTrFa_app::tff2200(TToken_string* strarr)
|
||||
bool TTrFa_app::tff2200(TToken_string* strarr, int nriga)
|
||||
{
|
||||
TTrFa_record tff2200f("TFF2200F");
|
||||
tff2200f.set("PL_KEYPRGINVIO", getKey(strarr));
|
||||
tff2200f.set("PL_KEYHEADERFATT", getHeader(strarr));
|
||||
tff2200f.set("PL_KEYBODYFATT", getBody(strarr));
|
||||
tff2200f.set("PL_KEYBODYFATT", getBody(strarr, false));
|
||||
TString numriga; numriga.format("%020d", nriga);
|
||||
tff2200f.set("PL_KEYBODYDETT", numriga);
|
||||
|
||||
tff2200f.set("PL_IMPONIBILE", strarr->get(_imponibile));
|
||||
tff2200f.set("PL_IMPOSTA", strarr->get(_importoIVA));
|
||||
tff2200f.set("PL_IMPONIBILE", real(strarr->get(_imponibile))); // Se li converto in real una volta passati vengono parsati da var2str nel formato che vuole l'agenzia delle entrate
|
||||
tff2200f.set("PL_IMPOSTA", real(strarr->get(_importoIVA)));
|
||||
tff2200f.set("PL_ALIQUOTAIVA", strarr->get(_aliquota));
|
||||
tff2200f.set("PL_NATURA", strarr->get(_natura));
|
||||
real det(strarr->get(_detraibile));
|
||||
@ -1840,7 +1852,7 @@ bool TTrFa_app::tff2200(TToken_string* strarr)
|
||||
det /= CENTO;
|
||||
if(det > ZERO)
|
||||
{
|
||||
tff2200f.set("PL_DETRAIBILE", det.stringa(6,2));
|
||||
tff2200f.set("PL_DETRAIBILE", det);
|
||||
}
|
||||
else if(false) // Sempre disabilitato!
|
||||
{
|
||||
@ -1910,7 +1922,7 @@ bool TTrFa_app::setEsportato(TSheet_field& sheet)
|
||||
{
|
||||
TRectype row = cache().get(LF_RMOV, TString(strarr->get(_numero)));
|
||||
row.put("TFINVIO", "X");
|
||||
row.put("TFDATA", TDate(TODAY));
|
||||
row.put("TFDATA", TDate(TODAY).string());
|
||||
ok = row.rewrite(TLocalisamfile(LF_RMOV)) == NOERR;
|
||||
if(!ok) return false;
|
||||
}
|
||||
|
@ -10,22 +10,14 @@
|
||||
#define START_BOOLEAN 407
|
||||
|
||||
#define B_TIPO_AUTOFATT 407
|
||||
#define B_TIPO_BOLLADOG 408
|
||||
#define B_TIPO_CORRNINC 409
|
||||
#define B_TIPO_CORR 410
|
||||
#define B_TIPO_FATTACQ 411
|
||||
#define B_TIPO_FATTFISC 412
|
||||
#define B_TIPO_FATTSC 413
|
||||
#define B_TIPO_FATTVEN 414
|
||||
#define B_TIPO_NOTC 415
|
||||
#define B_TIPO_NOTD 416
|
||||
#define B_TIPO_RICFIS 417
|
||||
#define B_TIPO_RICFISNI 418
|
||||
#define B_TIPO_SCONT 419
|
||||
#define B_TIPO_SCONTNI 420
|
||||
#define B_TIPO_STORDOC 421
|
||||
#define B_TIPO_FATTACQ 408
|
||||
#define B_TIPO_FATTFISC 409
|
||||
#define B_TIPO_FATTVEN 410
|
||||
#define B_TIPO_NOTC 411
|
||||
#define B_TIPO_NOTD 412
|
||||
#define B_TIPO_STORDOC 413
|
||||
|
||||
#define END_BOOLEAN 421
|
||||
#define END_BOOLEAN 413
|
||||
|
||||
#define END_MASK 421
|
||||
|
||||
|
@ -19,10 +19,10 @@ BEGIN
|
||||
PICTURE TOOL_SAVEREC
|
||||
END
|
||||
|
||||
BUTTON DLG_EDIT 10 2
|
||||
BEGIN
|
||||
PROMPT 3 1 "E~xcel"
|
||||
PICTURE TOOL_EXCEL
|
||||
BUTTON DLG_EDIT 10 2
|
||||
BEGIN
|
||||
PROMPT 3 1 "E~xcel"
|
||||
PICTURE TOOL_EXCEL
|
||||
END
|
||||
|
||||
#include <elabar.h>
|
||||
@ -51,7 +51,7 @@ END
|
||||
|
||||
NUMBER F_CODCF 6
|
||||
BEGIN
|
||||
PROMPT 18 4 "Codice:"
|
||||
PROMPT 18 3 "Codice:"
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF F_TIPOCF SELECT
|
||||
INPUT CODCF F_CODCF
|
||||
@ -69,7 +69,7 @@ END
|
||||
|
||||
STRING F_RAGSOC 50 49
|
||||
BEGIN
|
||||
PROMPT 18 5 "R.Soc: "
|
||||
PROMPT 18 4 "R.Soc: "
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF F_TIPOCF SELECT
|
||||
INPUT RAGSOC F_RAGSOC
|
||||
@ -86,96 +86,53 @@ END
|
||||
|
||||
RADIOBUTTON F_FATTSEL 25
|
||||
BEGIN
|
||||
PROMPT 1 7 "Fatture da visualizzare"
|
||||
PROMPT 1 6 "Fatture da visualizzare"
|
||||
ITEM "0|Da inviare"
|
||||
ITEM "1|Inviate"
|
||||
ITEM "2|Tutti"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 65 6
|
||||
GROUPBOX DLG_NULL 65 4
|
||||
BEGIN
|
||||
PROMPT 30 7 "Tipi documento selezionati"
|
||||
PROMPT 30 6 "Tipi documento selezionati"
|
||||
END
|
||||
|
||||
BOOLEAN B_TIPO_AUTOFATT
|
||||
BEGIN
|
||||
PROMPT 31 8 "Autofattura"
|
||||
FLAGS ""
|
||||
END
|
||||
BOOLEAN B_TIPO_BOLLADOG
|
||||
BEGIN
|
||||
PROMPT 45 8 "Bolla dog"
|
||||
FLAGS ""
|
||||
END
|
||||
BOOLEAN B_TIPO_CORRNINC
|
||||
BEGIN
|
||||
PROMPT 60 8 "Corr non inc"
|
||||
FLAGS ""
|
||||
END
|
||||
BOOLEAN B_TIPO_CORR
|
||||
BEGIN
|
||||
PROMPT 75 8 "Corrispettivo"
|
||||
PROMPT 31 7 "Autofattura"
|
||||
FLAGS ""
|
||||
END
|
||||
BOOLEAN B_TIPO_FATTACQ
|
||||
BEGIN
|
||||
PROMPT 31 9 "Fatt d'Acq"
|
||||
PROMPT 45 7 "Fatt d'Acq"
|
||||
FLAGS ""
|
||||
END
|
||||
BOOLEAN B_TIPO_FATTFISC
|
||||
BEGIN
|
||||
PROMPT 45 9 "Fatt Fisc"
|
||||
FLAGS ""
|
||||
END
|
||||
BOOLEAN B_TIPO_FATTSC
|
||||
BEGIN
|
||||
PROMPT 60 9 "Fatt Scontr"
|
||||
PROMPT 60 7 "Fatt Fisc"
|
||||
FLAGS ""
|
||||
END
|
||||
BOOLEAN B_TIPO_FATTVEN
|
||||
BEGIN
|
||||
PROMPT 75 9 "Fatt Ven"
|
||||
PROMPT 75 7 "Fatt Ven"
|
||||
FLAGS ""
|
||||
END
|
||||
BOOLEAN B_TIPO_NOTC
|
||||
BEGIN
|
||||
PROMPT 31 10 "Nota Cred"
|
||||
PROMPT 31 8 "Nota Cred"
|
||||
FLAGS ""
|
||||
END
|
||||
BOOLEAN B_TIPO_NOTD
|
||||
BEGIN
|
||||
PROMPT 45 10 "Nota Deb"
|
||||
FLAGS ""
|
||||
END
|
||||
BOOLEAN B_TIPO_RICFIS
|
||||
BEGIN
|
||||
PROMPT 60 10 "Ric fis"
|
||||
FLAGS ""
|
||||
END
|
||||
BOOLEAN B_TIPO_RICFISNI
|
||||
BEGIN
|
||||
PROMPT 75 10 "Ric Fis NI"
|
||||
FLAGS ""
|
||||
END
|
||||
BOOLEAN B_TIPO_SCONT
|
||||
BEGIN
|
||||
PROMPT 31 11 "Scontrino"
|
||||
FLAGS ""
|
||||
END
|
||||
BOOLEAN B_TIPO_SCONTNI
|
||||
BEGIN
|
||||
PROMPT 45 11 "Scontrino NI"
|
||||
PROMPT 45 8 "Nota Deb"
|
||||
FLAGS ""
|
||||
END
|
||||
BOOLEAN B_TIPO_STORDOC
|
||||
BEGIN
|
||||
PROMPT 60 11 "Storno Doc"
|
||||
PROMPT 60 8 "Storno Doc"
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
|
||||
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Trasferimento Fatture" 0 2 0 0
|
||||
@ -418,6 +375,7 @@ BOOLEAN A_AUTOFATT
|
||||
BEGIN
|
||||
PROMPT 25 9 "Autofattura"
|
||||
FIELD AUTOFATT
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING A_PAIV 12
|
||||
|
@ -41,9 +41,13 @@ enum filter_fatt
|
||||
|
||||
#define MOV_CUSTOM 10000000
|
||||
#define SHEET_GAP 101
|
||||
#define DTE_PROVV "DTE0000001"
|
||||
#define DTR_PROVV "DTR0000001"
|
||||
|
||||
#ifdef DBG
|
||||
#define DTE_PROVV "000001"
|
||||
#define DTR_PROVV "000002"
|
||||
#else
|
||||
#define DTE_PROVV "DTE"
|
||||
#define DTR_PROVV "DTR"
|
||||
#endif
|
||||
/* Così facendo basta modificare la maschera (e le dichiarazioni di conseguenza)
|
||||
* per avere l'inserimento nello sheet corretto */
|
||||
enum spesometroFields{
|
||||
@ -92,6 +96,8 @@ static bool haveRFSO(TString& codrfso);
|
||||
static const char* decodTipo(TToken_string* strarr);
|
||||
// Salvo un singolo record
|
||||
bool saveRec(TToken_string row, bool esportato = false);
|
||||
// Ritorno una data in formato ANSI
|
||||
TDate toDate(const char * date) { return TDate(date).string(); }
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
// TTrFa_record
|
||||
@ -150,7 +156,7 @@ class TTrFa_cursors : TObject
|
||||
|
||||
bool filOk(bool alreadySent) { return (filFat == all) || (filFat == sent && alreadySent) || (filFat == toSend && !alreadySent); }
|
||||
TRectype _next(return_code& code, TString& tipocf, TString& codcf); // Si sposta avanti di un elemento
|
||||
|
||||
bool checkRecord(TISAM_recordset* rec);
|
||||
public:
|
||||
TTrFa_cursors() : filFat(all) {};
|
||||
~TTrFa_cursors();
|
||||
@ -234,13 +240,13 @@ private:
|
||||
bool create_table(TScanner& TFF, const TString& table);
|
||||
TString getKey(TToken_string* strarr);
|
||||
TString getHeader(TToken_string* strarr);
|
||||
TString getBody(TToken_string* strarr);
|
||||
TString getBody(TToken_string* strarr, bool add = true);
|
||||
bool tff0100(TSheet_field& sheet); // Header esportazione
|
||||
bool tff0200(TString key); // Anagrafica ditta
|
||||
bool tff0300(TString key, TRectype r_ana); // Rappresentante fiscale ditta
|
||||
bool tff0400(TSheet_field& sheet); // Anagrafica clifo
|
||||
bool tff0700(TSheet_field& sheet); // Testata documento
|
||||
bool tff2200(TToken_string* strarr); // Riepilogo aliquote
|
||||
bool tff2200(TToken_string* strarr, int nriga); // Riepilogo aliquote
|
||||
bool tff3100(TToken_string* strarr, TRectype r_ana); // Rappresentante fiscale clifo
|
||||
bool setEsportato(TSheet_field& sheet);
|
||||
//const TRectype* find_parent_row(const TRectype& rdoc) const;
|
||||
|
@ -1,3 +1,9 @@
|
||||
[TFNUM00F]
|
||||
PJNKEY = CHAR(5)
|
||||
PJNINV = CHAR(10)
|
||||
|
||||
INDEX_1 = PJNKEY
|
||||
|
||||
[TFF0100F]
|
||||
P1_KEYPRGINVIO = CHAR(10)
|
||||
P1_TRASMITTPAESE = CHAR(2)
|
||||
@ -33,19 +39,19 @@ P2_DTISCRIZEALBO = DATE
|
||||
P2_REGFISCALE = CHAR(4)
|
||||
P2_SEDEIND = CHAR(60)
|
||||
P2_SEDENRCIVICO = CHAR(8)
|
||||
P2_SEDECAP = NUMERIC(5, 0)
|
||||
P2_SEDECAP = CHAR(5)
|
||||
P2_SEDECOMUNE = CHAR(60)
|
||||
P2_SEDEPROV = CHAR(2)
|
||||
P2_SEDENAZ = CHAR(2)
|
||||
P2_STABORGIND = CHAR(60)
|
||||
P2_STABORGNRCIVICO = CHAR(8)
|
||||
P2_STABORGCAP = NUMERIC(5, 0)
|
||||
P2_STABORGCAP = CHAR(5)
|
||||
P2_STABORGCOMUNE = CHAR(60)
|
||||
P2_STABORGPROV = CHAR(2)
|
||||
P2_STABORGNAZ = CHAR(2)
|
||||
P2_ISCRREAUFF = CHAR(2)
|
||||
P2_ISCRREANUM = CHAR(20)
|
||||
P2_ISCRREACAP = VARNUMERIC(15, 2)
|
||||
P2_ISCRREACAP = CHAR(5)
|
||||
P2_ISCRREASOCIOU = CHAR(2)
|
||||
P2_ISCRREASLIQUID = CHAR(2)
|
||||
P2_CONTATTITELEF = CHAR(12)
|
||||
@ -59,41 +65,41 @@ P2_ERREST = CHAR(1)
|
||||
INDEX_1 = P2_KEYPRGINVIO
|
||||
|
||||
[TFF0300F]
|
||||
P3_KEYPRGINVIO = CHAR(10)
|
||||
P3_FISCIVAPAESE = CHAR(2)
|
||||
P3_FISCIVACODICE = CHAR(28)
|
||||
P3_CODFISC = CHAR(16)
|
||||
P3_ANADENOMI = CHAR(80)
|
||||
P3_ANANOME = CHAR(60)
|
||||
P3_ANACOGNOME = CHAR(60)
|
||||
P3_ANATITOLO = CHAR(10)
|
||||
P3_ANACODEORI = CHAR(17)
|
||||
P3_GESTIONE = CHAR(1)
|
||||
P3_ERRINT = CHAR(1)
|
||||
P3_ERREST = CHAR(1)
|
||||
P3_KEYPRGINVIO = CHAR(10)
|
||||
P3_FISCIVAPAESE = CHAR(2)
|
||||
P3_FISCIVACODICE = CHAR(28)
|
||||
P3_CODFISC = CHAR(16)
|
||||
P3_ANADENOMI = CHAR(80)
|
||||
P3_ANANOME = CHAR(60)
|
||||
P3_ANACOGNOME = CHAR(60)
|
||||
P3_ANATITOLO = CHAR(10)
|
||||
P3_ANACODEORI = CHAR(17)
|
||||
P3_GESTIONE = CHAR(1)
|
||||
P3_ERRINT = CHAR(1)
|
||||
P3_ERREST = CHAR(1)
|
||||
|
||||
INDEX_1 = P3_KEYPRGINVIO
|
||||
|
||||
[TFF0400F]
|
||||
P4_KEYPRGINVIO = CHAR(10)
|
||||
P4_KEYHEADERFATT = CHAR(20)
|
||||
P4_FISCIVAPAESE = CHAR(2)
|
||||
P4_FISCIVACOD = CHAR(28)
|
||||
P4_CODFISC = CHAR(16)
|
||||
P4_ANADENOM = CHAR(80)
|
||||
P4_ANANOME = CHAR(60)
|
||||
P4_ANACOGNOME = CHAR(60)
|
||||
P4_ANATITOLO = CHAR(10)
|
||||
P4_ANACODEORI = CHAR(17)
|
||||
P4_SEDEIND = CHAR(60)
|
||||
P4_SEDENRCIVICO = CHAR(8)
|
||||
P4_SEDECAP = CHAR(5)
|
||||
P4_SEDECOMUNE = CHAR(60)
|
||||
P4_SEDEPROV = CHAR(2)
|
||||
P4_SEDENAZ = CHAR(2)
|
||||
P4_GESTIONE = CHAR(1)
|
||||
P4_ERRINT = CHAR(1)
|
||||
P4_ERREST = CHAR(1)
|
||||
P4_KEYPRGINVIO = CHAR(10)
|
||||
P4_KEYHEADERFATT = CHAR(20)
|
||||
P4_FISCIVAPAESE = CHAR(2)
|
||||
P4_FISCIVACOD = CHAR(28)
|
||||
P4_CODFISC = CHAR(16)
|
||||
P4_ANADENOM = CHAR(80)
|
||||
P4_ANANOME = CHAR(60)
|
||||
P4_ANACOGNOME = CHAR(60)
|
||||
P4_ANATITOLO = CHAR(10)
|
||||
P4_ANACODEORI = CHAR(17)
|
||||
P4_SEDEIND = CHAR(60)
|
||||
P4_SEDENRCIVICO = CHAR(8)
|
||||
P4_SEDECAP = CHAR(5)
|
||||
P4_SEDECOMUNE = CHAR(60)
|
||||
P4_SEDEPROV = CHAR(2)
|
||||
P4_SEDENAZ = CHAR(2)
|
||||
P4_GESTIONE = CHAR(1)
|
||||
P4_ERRINT = CHAR(1)
|
||||
P4_ERREST = CHAR(1)
|
||||
|
||||
INDEX_1 = P4_KEYPRGINVIO,P4_KEYHEADERFATT
|
||||
|
||||
@ -128,6 +134,7 @@ INDEX_1 = P7_KEYPRGINVIO,P7_KEYHEADERFATT,P7_KEYBODYFATT
|
||||
PL_KEYPRGINVIO = CHAR(10)
|
||||
PL_KEYHEADERFATT = CHAR(20)
|
||||
PL_KEYBODYFATT = CHAR(20)
|
||||
PL_KEYBODYDETT = CHAR(20)
|
||||
PL_ALIQUOTAIVA = NUMERIC(6,2)
|
||||
PL_NATURA = CHAR(2)
|
||||
PL_SPESEACCESS = NUMERIC(15,2)
|
||||
@ -137,19 +144,19 @@ PL_IMPOSTA = NUMERIC(15,2)
|
||||
PL_ESIGIVA = CHAR(1)
|
||||
PL_RIFNORMATIVO = CHAR(100)
|
||||
PL_DETRAIBILE = NUMERIC(6, 2)
|
||||
PD_DEDUCIBILE = CHAR(2)
|
||||
PL_DEDUCIBILE = CHAR(2)
|
||||
PL_GESTIONE = CHAR(1)
|
||||
PL_ERRINT = CHAR(1)
|
||||
PL_ERREST = CHAR(1)
|
||||
|
||||
INDEX_1 = PL_KEYPRGINVIO,PL_KEYHEADERFATT,PL_KEYBODYFATT
|
||||
INDEX_1 = PL_KEYPRGINVIO,PL_KEYHEADERFATT,PL_KEYBODYFATT,PL_KEYBODYDETT
|
||||
|
||||
[TFF3100F]
|
||||
PH_KEYPRGINVIO = CHAR(10)
|
||||
PH_KEYHEADERFATT = CHAR(20)
|
||||
PH_STABORGIND = CHAR(60)
|
||||
PH_STABORGNRCIVICO = CHAR(8)
|
||||
PH_STABORGCAP = NUMERIC(5)
|
||||
PH_STABORGCAP = CHAR(5)
|
||||
PH_STABORGCOMUNE = CHAR(60)
|
||||
PH_STABORGPROV = CHAR(2)
|
||||
PH_STABORGNAZ = CHAR(2)
|
||||
|
Loading…
x
Reference in New Issue
Block a user