Merge remote-tracking branch 'origin/R_10_00' into R_10_00

This commit is contained in:
Mattia Tollari 2019-06-25 17:32:51 +02:00
commit 1f21b6b70e
17 changed files with 227 additions and 40 deletions

5
cd/test/cg0846.txt Normal file
View File

@ -0,0 +1,5 @@
cg2100a.msk
cg2fppro.msk
Cambiata icona ricarica fatture su 'Fatture SDI'
Aggiunta importazione percent. e natura iva da ini con f1

95
cd/test/cg0846a.ini Normal file
View File

@ -0,0 +1,95 @@
[Main]
Demo=0
[cg2]
Edit_23 = cg2 -0
File(154) = cg2.exe|X
File(167) = cg2fppro.msk|X
Patch = 846
Versione = 21511200
[cg99]
Kill(0) = batbmsp.msk|x
Kill(1) = bastcve.rep|x
Kill(2) = batbins.msk|x
Kill(3) = bastscc.rep|x
Kill(4) = batbcam.msk|x
Kill(5) = batbpdb.msk|x
Kill(6) = bastver.msk|x
Kill(7) = batbcco.msk|x
Kill(8) = batbesc.msk|x
Kill(9) = batbdpn.msk|x
Kill(10) = bastndo.msk|x
Kill(11) = bastesc.msk|x
Kill(12) = batbndo.msk|x
Kill(13) = batbind.msk|x
Kill(14) = bastmsp.msk|x
Kill(15) = bastreg.rep|x
Kill(16) = batbleg.msk|x
Kill(17) = bastpor.msk|x
Kill(18) = batbpor.msk|x
Kill(19) = batbcfi.msk|x
Kill(20) = bastcco.msk|x
Kill(21) = bastmsp.rep|x
Kill(22) = batbtit.msk|x
Kill(23) = batbcve.msk|x
Kill(24) = batbivd.msk|x
Kill(25) = batbscc.msk|x
Kill(26) = bastcfi.rep|x
Kill(27) = batbarb.msk|x
Kill(28) = bastver.rep|x
Kill(29) = bastleg.msk|x
Kill(30) = bastzon.rep|x
Kill(31) = bastleg.rep|x
Kill(32) = bastcam.rep|x
Kill(33) = batblia.msk|x
Kill(34) = batbzon.msk|x
Kill(35) = bastvet.rep|x
Kill(36) = bastdpn.msk|x
Kill(37) = bastivd.msk|x
Kill(38) = bastarb.rep|x
Kill(39) = bastcam.msk|x
Kill(40) = bastntb.msk|x
Kill(41) = bastivd.rep|x
Kill(42) = bastdpn.rep|x
Kill(43) = bastpdb.msk|x
Kill(44) = batbinl.msk|x
Kill(45) = bastesc.rep|x
Kill(46) = bastreg.msk|x
Kill(47) = batbreg.msk|x
Kill(48) = bastzon.msk|x
Kill(49) = bastarb.msk|x
Kill(50) = batblia.msk|x
Kill(51) = cgtbcon.msk|x
Kill(52) = batbnot.msk|x
Kill(53) = batbdel.msk|x
Kill(54) = batbvet.msk|x
Kill(55) = batbtra.msk|x
Kill(56) = bastnot.rep|x
Kill(57) = bastpdb.rep|x
Kill(58) = bastscc.msk|x
Kill(59) = bastcco.rep|x
Kill(60) = batbntb.msk|x
Kill(61) = bastvet.msk|x
Kill(62) = batbver.msk|x
Kill(63) = bastcfi.msk|x
Kill(64) = batblbu.msk|x
Kill(65) = bastntb.rep|x
Kill(66) = bastcve.msk|x
Kill(67) = bastndo.rep|x
Kill(68) = bastnot.msk|x
Kill(69) = bastpor.rep|x
[cg]
Data = 25-06-2019
Descrizione = Contabilita' Generale
Dischi = 1
Moduli = ba
OEM =
Patch = 846
PostProcess = bainst -0 CG
PreProcess =
Prezzo(1) =
Prezzo(2) =
Versione = 21511200

BIN
cd/test/cg0846a1.zip Normal file

Binary file not shown.

6
cd/test/fp0840.txt Normal file
View File

@ -0,0 +1,6 @@
fp0.exe
fp0500a.msk
- Sistemata maschera
- Aggiunti operatori logici AND(&&) e OR(||) nelle condizioni
- Aggiunto READ a tabella tipo documento

20
cd/test/fp0840a.ini Normal file
View File

@ -0,0 +1,20 @@
[Main]
Demo=0
[fp1]
File(0) = fp0.exe|X
File(5) = fp0500a.msk|X
Patch = 840
Versione = 21511200
[fp]
Data = 25-06-2019
Descrizione = Fattura Elettronica
Dischi = 1
Moduli = cg,ve
OEM =
Patch = 840
PostProcess =
PreProcess =
Versione = 21511200

BIN
cd/test/fp0840a1.zip Normal file

Binary file not shown.

6
cd/test/fp0842.txt Normal file
View File

@ -0,0 +1,6 @@
fp0.exe
fp0400a.msk
Corretta visualizzazione totale doc. con solo 2 cifre dec.
Aggiunto numero fornitore nel log da fatture annullate
Aggiunto controllo contabilizzazione senza cod. fornitore

20
cd/test/fp0842a.ini Normal file
View File

@ -0,0 +1,20 @@
[Main]
Demo=0
[fp1]
File(0) = fp0.exe|X
File(4) = fp0400a.msk|X
Patch = 0842
Versione = 21511200
[fp]
Data = 25-06-2019
Descrizione = Fattura Elettronica
Dischi = 1
Moduli = cg,ve
OEM =
Patch = 842
PostProcess =
PreProcess =
Versione = 21511200

BIN
cd/test/fp0842a1.zip Normal file

Binary file not shown.

3
cd/test/fp0844.txt Normal file
View File

@ -0,0 +1,3 @@
fp0.exe
Aggiunta esportazione percentuale e natura iva per f1

19
cd/test/fp0844a.ini Normal file
View File

@ -0,0 +1,19 @@
[Main]
Demo=0
[fp1]
File(0) = fp0.exe|X
Patch = 0844
Versione = 21511200
[fp]
Data = 25-06-2019
Descrizione = Fattura Elettronica
Dischi = 1
Moduli = cg,ve
OEM =
Patch = 844
PostProcess =
PreProcess =
Versione = 21511200

BIN
cd/test/fp0844a1.zip Normal file

Binary file not shown.

View File

@ -2129,7 +2129,11 @@ void TPrimanota_application::ini2mask(TConfig& ini, TMask& msk, bool query)
TBill c; ini2bill(ini, c, false);
if (c.gruppo() > 0)
c.add_to(riga, 4, 0x7); // Conto 105-110
if (_f1_ini)
{
add_not_empty(riga, 10, ini, "PERCIVA"); // Perc. IVA 111
add_not_empty(riga, 11, ini, "NATURA"); // Natura IVA 112
}
iva_notify(is, i, K_ENTER);
}
@ -2271,7 +2275,6 @@ void TPrimanota_application::ini2mask(TConfig& ini, TMask& msk, bool query)
//msk.set(F_TOTALE, calcola_imp());
msk.set(F_COLFPPRO, "X");
msk.set(FS_RECALC, "");
load_perc_nat(msk, ini);
}
if (_f1_liq && msk.find_by_id(F_DIFFERITA) != NULL)
{
@ -2282,24 +2285,6 @@ void TPrimanota_application::ini2mask(TConfig& ini, TMask& msk, bool query)
}
}
void TPrimanota_application::load_perc_nat(const TMask& msk, TConfig& ini)
{
TString riga;
TSheet_field& iva = ivas();
int i = 0;
/*for(TToken_string& row = iva.row(0); TString(row.get(0)).full() || TString(row.get(3)).full(); row = iva.row(++i))
{
TToken_string old(row);
iva_notify(iva, i, K_DEL);
iva_notify(iva, i, K_SPACE);
row.add(old.get(cid2index(IVA_IMPONIBILE)), cid2index(IVA_IMPONIBILE));
row.add(old.get(cid2index(IVA_IMPOSTA)), cid2index(IVA_IMPOSTA));
row.add(ini.get("PERCIVA", TString("25,") << i+1),cid2index(IVA_PERCIVA));
row.add(ini.get("NATURA", TString("25,") << i+1), cid2index(IVA_NATURIVA));
iva_notify(iva, i, K_ENTER);
}*/
}
bool TPrimanota_application::save(bool check_dirty)
{
if (_swap_mask == true)

View File

@ -210,7 +210,6 @@ protected: // TApplication
virtual void print();
void dump_rec(TConfig & ini, const TRectype & rec, int row = 0, int pref = 0);
void dump_fatt(TConfig& ini, TPartita & game, int rigafatt, int pref = 0);
void load_perc_nat(const TMask& msk, TConfig& ini);
virtual void ini2mask(TConfig& ini, TMask& msk, bool query);
virtual void mask2ini(const TMask& msk, TConfig& ini);
@ -402,9 +401,10 @@ public:
class TPro_msk : public TAutomask
{
public:
struct riga_iva_s;
struct scadenza_s;
private:
TString _numero;
TDate _datadoc;
real _totdoc;

View File

@ -5,7 +5,7 @@ TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_CONFIG 2 2
BEGIN
PROMPT 1 1 "Ricarica Fatture"
PICTURE TOOL_ELABORA
PICTURE TOOL_CONVERT
END
BUTTON DLG_OK 2 2

View File

@ -20,7 +20,9 @@ enum err_cont
no_selected = -2,
is_already_cont = -3,
cancel = -4,
is_ready = 0
forn_err = -5, // Manca un codice fornitore
is_ready = 0,
no_err = 1
};
class TFppro : public TObject

View File

@ -37,8 +37,10 @@ class TPassive_mask : public TAutomask
{
struct iva
{
real imponibile;
real imposta;
real imponibile;
real imposta;
real aliquota;
TString4 natura;
};
TLog_report* _log;
@ -67,11 +69,12 @@ protected:
void run_cg0(const TString& filename) const;
void elenco_prots_sel(TString& string) const;
vector<iva>& get_righe_iva(TToken_string& keys) const;
static vector<iva>& get_righe_iva(TToken_string& keys);
real calcola_importo(vector<iva> riva) const;
// Gestione F1
int prepara_contab() const;
void log_contab();
int check_err() const;
void contabilizza();
TDate load_data() const;
// Handlers
@ -203,21 +206,22 @@ void TPassive_mask::elenco_prots_sel(TString& string) const
string = "";
}
vector<TPassive_mask::iva>& TPassive_mask::get_righe_iva(TToken_string& keys) const
vector<TPassive_mask::iva>& TPassive_mask::get_righe_iva(TToken_string& keys)
{
static vector<iva> riva;
riva.clear();
TString where_q; where_q << "WHERE PL_KEYPRGINVIO = '" << keys.get(0);
where_q << "' AND PL_KEYHEADERFATT = '" << keys.get();
where_q << "' AND PL_KEYBODYFATT = '" << keys.get() << "'";
TString query; query << "SELECT PL_IMPONIBILE AS IMPONIBILE, PL_IMPOSTA AS IMPOSTA \nFROM PAA2200F \n" << where_q;
TString query; query << "SELECT PL_IMPONIBILE AS IMPONIBILE, PL_IMPOSTA AS IMPOSTA, PL_ALIQUOTAIVA AS ALIQUOTA, PL_NATURA AS NATURA\n" <<
"FROM PAA2200F \n" << where_q;
fp_db().sq_set_exec(query, false);
for (bool ok = fp_db().sq_next(); ok; ok = fp_db().sq_next())
{
TString imponibile = fp_db().sq_get("IMPONIBILE");
TString imposta = fp_db().sq_get("IMPOSTA");
if (imponibile.full() || imposta.full())
riva.insert(riva.end(), { real(imponibile), real(imposta) });
riva.insert(riva.end(), { real(imponibile), real(imposta), real(fp_db().sq_get("ALIQUOTA")), fp_db().sq_get("NATURA") });
}
return riva;
}
@ -544,6 +548,10 @@ void TPassive_mask::run_cg0(const TString& filename) const
int TPassive_mask::prepara_contab() const
{
const int err = check_err();
if (err != no_err)
return err;
int n_sel = 0;
TSheet_field& sf = sfield(F_DOCS);
sf.hide();
@ -557,18 +565,13 @@ int TPassive_mask::prepara_contab() const
TToken_string keys(prokeys, ';');
TString codcaus(get_codcaus(row->get(2), row->get(10)));
if(!TString(row->get(sf.cid2index(S_NUMREGCONT))).empty())
return n+1000;
if (codcaus.empty())
return no_codcaus;
TString tipodoc(row->get(sf.cid2index(S_TIPODOCSDI)));
if(tipodoc == "TD01" && !check_causale(codcaus, "FA"))
if(!yesno_box("Attenzione, per un documento di tipo TD01 e' stata selezionata \nuna causale diversa da Fattura d'Acquisto.\nContinuare?"))
return cancel;
if(!yesno_box("Attenzione, per un documento di tipo TD01 e' stata selezionata \nuna causale diversa da Fattura d'Acquisto.\nProcedere lo stesso con l'esportazione?"))
continue;
if(tipodoc == "TD04" && !check_causale(codcaus, "NC"))
if(!yesno_box("Attenzione, per un documento di tipo TD04 e' stata selezionata \nuna causale diversa da Nota Credito di Acquisto.\nContinuare?"))
return cancel;
if(!yesno_box("Attenzione, per un documento di tipo TD04 e' stata selezionata \nuna causale diversa da Nota Credito di Acquisto.\nProcedere lo stesso con l'esportazione?"))
continue;
n_sel++;
vector<iva>& riva = get_righe_iva(keys);
@ -613,6 +616,8 @@ int TPassive_mask::prepara_contab() const
contab_ini.set_paragraph(LF_RMOVIVA, i);
contab_ini.set("IMPONIBILE", it->imponibile.string());
contab_ini.set("IMPOSTA", it->imposta.string());
contab_ini.set("PERCIVA", it->aliquota.string());
contab_ini.set("NATURA", it->natura);
contab_ini.set("NRIGA", i);
i++;
}
@ -712,6 +717,25 @@ void TPassive_mask::log_contab()
log.show_log();
}
int TPassive_mask::check_err() const
{
TSheet_field& sf = sfield(F_DOCS);
FOR_EACH_SHEET_ROW(sf, nr, row)
{
if (row->starts_with("X"))
{
TString codcaus(get_codcaus(row->get(2), row->get(10)));
if (codcaus.empty())
return no_codcaus;
if (TString(row->get(cid2index(S_FORNITORE))).empty())
return forn_err;
if (!TString(row->get(cid2index(S_NUMREGCONT))).empty())
return nr + 1000;
}
}
return no_err;
}
void TPassive_mask::contabilizza()
{
const int stato = prepara_contab();
@ -727,11 +751,13 @@ void TPassive_mask::contabilizza()
break;
case no_codcaus:
message_box("Attenzione, il fornitore non ha associato nessun codice causale predefinito.\nPrego selezionare un codice causale per la contabilizzazione.");
fill();
break;
case no_selected:
message_box("Selezionare almeno un documento.");
break;
case forn_err:
warning_box("Almeno un documento selezionato non presenta il codice fornitore. \nSi prega di associare il documento a un fornitore e procedere \nnuovamente con la contabilizzazione.");
break;
case cancel:
next_page(1000);
default: break;