Merge branch 'R_10_00' of http://10.65.20.17:7990/scm/campo/campo into R_10_00
This commit is contained in:
commit
35031ece2c
8
cd/test/cg0704.txt
Normal file
8
cd/test/cg0704.txt
Normal file
@ -0,0 +1,8 @@
|
||||
cg4.exe
|
||||
|
||||
Modificato salvataggio percentuale pro-rata (diana2000) per sistemare si puo azzerare il campo R12 della tabella PLM del mese in oggetto (è 1999) o ricalcolare la liquidazione
|
||||
Va provato anche con un pro-rata per verificare che salvi la % giusta.
|
||||
|
||||
Modificato prospetto pro-rata annuale.
|
||||
|
||||
Modificato il calcolo interessi per i trimestrali. Ora anche a dicembre (Pastore).
|
94
cd/test/cg0704a.ini
Normal file
94
cd/test/cg0704a.ini
Normal file
@ -0,0 +1,94 @@
|
||||
[Main]
|
||||
Demo=0
|
||||
|
||||
[cg1]
|
||||
Edit_23 = cg2 -0
|
||||
File(39) = cg4.exe|X
|
||||
Patch = 704
|
||||
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 = 20-02-2019
|
||||
Descrizione = Contabilita' Generale
|
||||
Dischi = 1
|
||||
Moduli = ba
|
||||
OEM =
|
||||
Patch = 704
|
||||
PostProcess = bainst -0 CG
|
||||
PreProcess =
|
||||
Prezzo(1) =
|
||||
Prezzo(2) =
|
||||
Versione = 21511200
|
||||
|
BIN
cd/test/cg0704a1.zip
Normal file
BIN
cd/test/cg0704a1.zip
Normal file
Binary file not shown.
7
cd/test/fp0706.txt
Normal file
7
cd/test/fp0706.txt
Normal file
@ -0,0 +1,7 @@
|
||||
fp0.exe
|
||||
fp0100a.msk
|
||||
|
||||
- Aggiunto piccolo controllo preventivo durante l'esportazione degli XML
|
||||
- Aggiunto flag per non rendere il controllo bloccante
|
||||
- Sistemata banca di appoggio
|
||||
- Aggiunta gestione casse professionali
|
20
cd/test/fp0706a.ini
Normal file
20
cd/test/fp0706a.ini
Normal file
@ -0,0 +1,20 @@
|
||||
[Main]
|
||||
Demo=0
|
||||
|
||||
[fp1]
|
||||
File(0) = fp0.exe|X
|
||||
File(1) = fp0100a.msk|X
|
||||
Patch = 0706
|
||||
Versione = 21511200
|
||||
|
||||
[fp]
|
||||
Data = 21-02-2019
|
||||
Descrizione = Fattura Elettronica
|
||||
Dischi = 1
|
||||
Moduli = cg,ve
|
||||
OEM =
|
||||
Patch = 706
|
||||
PostProcess =
|
||||
PreProcess =
|
||||
Versione = 21511200
|
||||
|
BIN
cd/test/fp0706a1.zip
Normal file
BIN
cd/test/fp0706a1.zip
Normal file
Binary file not shown.
3
cd/test/fp0708.txt
Normal file
3
cd/test/fp0708.txt
Normal file
@ -0,0 +1,3 @@
|
||||
fp0.exe
|
||||
fp0100a.msk
|
||||
fp0400a.msk
|
21
cd/test/fp0708a.ini
Normal file
21
cd/test/fp0708a.ini
Normal file
@ -0,0 +1,21 @@
|
||||
[Main]
|
||||
Demo=0
|
||||
|
||||
[fp1]
|
||||
File(0) = fp0.exe|X
|
||||
File(1) = fp0100a.msk|X
|
||||
File(4) = fp0400a.msk|X
|
||||
Patch = 0708
|
||||
Versione = 21511200
|
||||
|
||||
[fp]
|
||||
Data = 22-02-2019
|
||||
Descrizione = Fattura Elettronica
|
||||
Dischi = 1
|
||||
Moduli = cg,ve
|
||||
OEM =
|
||||
Patch = 708
|
||||
PostProcess =
|
||||
PreProcess =
|
||||
Versione = 21511200
|
||||
|
BIN
cd/test/fp0708a1.zip
Normal file
BIN
cd/test/fp0708a1.zip
Normal file
Binary file not shown.
@ -44,6 +44,7 @@ void TParametri_mask::save_all() const
|
||||
fp_settings().set_gest_alleg(get_bool(F_ESPORTAALLEG));
|
||||
fp_settings().set_allega_fat(get_bool(F_ESPORTADOC));
|
||||
fp_settings().set_f8(get_bool(F_F8));
|
||||
fp_settings().set_check_not_block(get_bool(F_CHECK_NOT_BLOCK));
|
||||
TFP_righe_custom().save_sheet(sfield(F_FORMPERS));
|
||||
}
|
||||
|
||||
@ -59,6 +60,7 @@ void TParametri_mask::load_all()
|
||||
set(F_ESPORTAALLEG, fp_settings().get_gest_alleg());
|
||||
set(F_ESPORTADOC, fp_settings().get_allega_fat());
|
||||
set(F_F8, fp_settings().is_f8());
|
||||
set(F_CHECK_NOT_BLOCK, fp_settings().get_check_not_block());
|
||||
TFP_righe_custom().load_sheet(sfield(F_FORMPERS));
|
||||
}
|
||||
|
||||
|
@ -1,24 +1,25 @@
|
||||
#define F_INDIRIZZO 201
|
||||
#define F_DATABASE 202
|
||||
#define F_USER 203
|
||||
#define F_PASSWORD 204
|
||||
#define F_FLDDEST 205
|
||||
#define F_FLDUSRDEST 206
|
||||
#define F_COFI 207
|
||||
#define F_ESPORTAALLEG 208
|
||||
#define F_ESPORTADOC 209
|
||||
#define F_F8 210
|
||||
#define F_INDIRIZZO 201
|
||||
#define F_DATABASE 202
|
||||
#define F_USER 203
|
||||
#define F_PASSWORD 204
|
||||
#define F_FLDDEST 205
|
||||
#define F_FLDUSRDEST 206
|
||||
#define F_COFI 207
|
||||
#define F_ESPORTAALLEG 208
|
||||
#define F_ESPORTADOC 209
|
||||
#define F_F8 210
|
||||
#define F_CHECK_NOT_BLOCK 211
|
||||
|
||||
#define F_SETPATCH 301
|
||||
#define F_ENPTYTABLE 302
|
||||
#define F_DROPTABLE 303
|
||||
#define F_REBORNDB 304
|
||||
#define F_SETPATCH 301
|
||||
#define F_ENPTYTABLE 302
|
||||
#define F_DROPTABLE 303
|
||||
#define F_REBORNDB 304
|
||||
|
||||
|
||||
#define F_FORMPERS 401
|
||||
#define F_FORMPERS 401
|
||||
|
||||
#define S_TIPODOC 101
|
||||
#define S_TIPORIGA 102
|
||||
#define S_QTA 103
|
||||
#define S_PREZZO 104
|
||||
#define S_IMPONIBILE 105
|
||||
#define S_TIPODOC 101
|
||||
#define S_TIPORIGA 102
|
||||
#define S_QTA 103
|
||||
#define S_PREZZO 104
|
||||
#define S_IMPONIBILE 105
|
@ -89,6 +89,32 @@ END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Configurazione (2) " 0 2 0 0
|
||||
|
||||
SPREADSHEET F_FORMPERS 60 6
|
||||
BEGIN
|
||||
PROMPT 1 1 "Personalizzazioni calcolo tipi righe "
|
||||
ITEM "Tipo\nDoc@4"
|
||||
ITEM "Tipo\nRiga@4"
|
||||
ITEM "Qta"
|
||||
ITEM "Prezzo"
|
||||
ITEM "Imponibile"
|
||||
END
|
||||
|
||||
|
||||
GROUPBOX DLG_NULL 78 2
|
||||
BEGIN
|
||||
PROMPT 1 8 "@BControlli preventivi"
|
||||
END
|
||||
|
||||
BOOLEAN F_CHECK_NOT_BLOCK
|
||||
BEGIN
|
||||
PROMPT 2 11 "Rendi controlli XML non bloccanti"
|
||||
END
|
||||
|
||||
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Assistenza FP" 0 2 0 0
|
||||
|
||||
@ -118,19 +144,6 @@ END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Formule Pers " 0 2 0 0
|
||||
|
||||
SPREADSHEET F_FORMPERS 60 6
|
||||
BEGIN
|
||||
PROMPT 1 1 "Personalizzazioni calcolo tipi righe "
|
||||
ITEM "Tipo\nDoc@4"
|
||||
ITEM "Tipo\nRiga@4"
|
||||
ITEM "Qta"
|
||||
ITEM "Prezzo"
|
||||
ITEM "Imponibile"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
PAGE "Elementi spredsheet" 0 2 0 0
|
||||
@ -185,7 +198,6 @@ BEGIN
|
||||
OUTPUT S_IMPONIBILE CODTAB
|
||||
END
|
||||
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "Riga" 0 0 0 2
|
||||
|
@ -214,7 +214,7 @@ void TPA_mask::fill()
|
||||
row.add(rec.get("20." CLI_RAGSOC).as_string());
|
||||
|
||||
TString rif = get_dest_sdi(rec.get(CFV_TIPOCF).as_string()[0], rec.get(CFV_CODCF).as_int());
|
||||
// Se è ancora vuoto potrebbe essere estero
|
||||
// Se è ancora vuoto potrebbe essere estero
|
||||
if(rif.empty())
|
||||
{
|
||||
// Segno la riga errata
|
||||
@ -254,7 +254,7 @@ void TPA_mask::fill()
|
||||
docs.show();
|
||||
|
||||
if (fat_no_cod > 0)
|
||||
warning_box("Sono state trovate una o più fatture senza codice destinatario nè pec");
|
||||
warning_box("Sono state trovate una o più fatture senza codice destinatario né pec");
|
||||
}
|
||||
|
||||
void TPA_mask::set_filter_changed()
|
||||
@ -369,7 +369,7 @@ bool TPA_mask::check_not_empty()
|
||||
TString msg;
|
||||
|
||||
if (sheet.empty())
|
||||
msg = "La tabella dei movimenti è vuota, vuoi caricarla con i filtri selezionati?";
|
||||
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?";
|
||||
|
||||
@ -445,14 +445,14 @@ void TPA_mask::set_err_paf()
|
||||
TString query = "UPDATE PAF0100F SET P1_GESTIONE = 'E' WHERE P1_KEYHEADERFATT = '"; query << hfatt << "' AND P1_KEYBODYFATT = '" << bfatt << "';";
|
||||
if(!fp_db().sq_set_exec(query))
|
||||
{
|
||||
TString err = "Impossibile salvare la fattura "; err << anno << " " << codnum << " " << ndoc << "\nVerrà saltata.";
|
||||
TString err = "Impossibile salvare la fattura "; err << anno << " " << codnum << " " << ndoc << "\nVerrà saltata.";
|
||||
error_box(err);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
TString err = "Impossibile trovare la fattura "; err << anno << " " << codnum << " " << ndoc << "\nVerrà saltata.";
|
||||
TString err = "Impossibile trovare la fattura "; err << anno << " " << codnum << " " << ndoc << "\nVerrà saltata.";
|
||||
error_box(err);
|
||||
}
|
||||
}
|
||||
@ -461,7 +461,7 @@ void TPA_mask::set_err_paf()
|
||||
}
|
||||
|
||||
// Mi sposto nella prima pagina, setto il flag di dirty sul filtro e mi risposto
|
||||
// Lo faccio perchè eliminando la riga direttamente e chiamando la force_update() si crea un bug che cliccando sulla prima riga viene mostrata quella che c'era prima della eliminazione
|
||||
// Lo faccio perché eliminando la riga direttamente e chiamando la force_update() si crea un bug che cliccando sulla prima riga viene mostrata quella che c'era prima della eliminazione
|
||||
TAutomask::next_page(0);
|
||||
set_focus_field(F_DATAINI);
|
||||
_filter_changed = true;
|
||||
@ -525,7 +525,7 @@ void TDoc2Paf::main_loop()
|
||||
ndocs++;
|
||||
else
|
||||
{
|
||||
if (!yesno_box("L'ultima fattura non è stata esportata, continuare?"))
|
||||
if (!yesno_box("L'ultima fattura non è stata esportata, continuare?"))
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -10,14 +10,16 @@
|
||||
#include "fp0400a.h"
|
||||
#include "fplib.h"
|
||||
#include "sheet.h"
|
||||
#include "execp.h"
|
||||
#include "dongle.h"
|
||||
|
||||
enum
|
||||
{
|
||||
no_cf = -14, // Non trovato con cod.fisc. (se non ho nemmeno la p.iva)
|
||||
no_cf = -14, // Non trovato con cod. fisc. (se non ho nemmeno la p.iva)
|
||||
no_match_cf = -15, // Trovato forn. ma il cod. fisc non corrisponde
|
||||
no_forn = -5, // Non trovato forn.con p.iva
|
||||
no_forn = -5, // Non trovato forn. con p.iva
|
||||
err_match_db = -3, // Salvato in db ma non corrisponde a un fornitore
|
||||
saved_db = 0, // Salvato già in db FPPRO
|
||||
saved_db = 0, // Salvato già in db FPPRO
|
||||
found_piva = 2, // Lo trovo con p.iva
|
||||
found_cf = 4, // Non ho p.iva lo trovo con cod.fisc
|
||||
};
|
||||
@ -29,6 +31,10 @@ protected:
|
||||
|
||||
void set_filter_changed();
|
||||
void select_all(int sheet_field);
|
||||
// Tasto nuovo: apre nuovo fornitore valorizzando già i dati dalla fattura
|
||||
void new_forn();
|
||||
// Tasto aggiorna: aggiorna cliente che non corrisponde.
|
||||
void aggiorna_forn();
|
||||
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
|
||||
void next_page(int p) override;
|
||||
// Elenco dei protocolli selezionati
|
||||
@ -36,15 +42,17 @@ protected:
|
||||
void fill();
|
||||
static int find_fornitore(TLocalisamfile& clifo);
|
||||
static void add_row_err_forn(int forn_code, TSheet_field& sf_err, TString& denom);
|
||||
static void aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TSheet_field& sf_err);
|
||||
// Aggiunge i protocolli che sono già presenti per le fatture nel db alla tabellina per il filtro
|
||||
void aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TSheet_field& sf_err);
|
||||
// Aggiunge i protocolli che sono già presenti per le fatture nel db alla tabellina per il filtro
|
||||
void aggiungi_prot() const;
|
||||
void init();
|
||||
|
||||
void load_all_fields();
|
||||
|
||||
TToken_string _forn_code;
|
||||
TToken_string _list_fatt_err;
|
||||
bool _filter_changed;
|
||||
void salva_for();
|
||||
void salva_for() const;
|
||||
|
||||
public:
|
||||
void save_all_fields() const;
|
||||
@ -52,6 +60,10 @@ public:
|
||||
TPassive_mask() : TAutomask("fp0400a"), _filter_changed(true)
|
||||
{
|
||||
load_all_fields();
|
||||
_forn_code = "";
|
||||
_forn_code.separator('|');
|
||||
_list_fatt_err = "";
|
||||
_list_fatt_err.separator('|');
|
||||
}
|
||||
};
|
||||
|
||||
@ -107,7 +119,8 @@ void TPassive_mask::fill()
|
||||
"ORDER BY PZ_ANNOPROT DESC, PZ_TIPOPROT ASC, PZ_NUMPROT DESC";
|
||||
fp_db().sq_set_exec(query, false);
|
||||
|
||||
|
||||
_forn_code = "";
|
||||
_list_fatt_err = "";
|
||||
while(fp_db().sq_next())
|
||||
{
|
||||
aggiungi_riga(clifo, sf, sf_err);
|
||||
@ -133,7 +146,7 @@ void TPassive_mask::elenco_prots_sel(TString& string) const
|
||||
elenco.add(row->get());
|
||||
}
|
||||
|
||||
// Creo una stringa da aggiungere alla query per la ricerca col codice protocollo, così fatta:
|
||||
// Creo una stringa da aggiungere alla query per la ricerca col codice protocollo, così fatta:
|
||||
// " AND PZ_TIPOPROT IN ('a', 'b', 'c')". (con elenco avente "a", "b" e "c" come stringhe)
|
||||
if (elenco.items() > 0)
|
||||
{
|
||||
@ -175,6 +188,11 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee
|
||||
|
||||
// Dopo aver fatto le ricerche se lo trovo lo segno e lo aggiungo, se no coloro la cella
|
||||
forn_code = find_fornitore(clifo);
|
||||
TString forn_str; forn_str << forn_code;
|
||||
TString nr_row; nr_row << sf.items();
|
||||
_forn_code.add(forn_str);
|
||||
|
||||
_list_fatt_err.add(nr_row);
|
||||
if (forn_code == 0) row.add("X");
|
||||
else row.add("");
|
||||
|
||||
@ -226,20 +244,20 @@ void TPassive_mask::aggiungi_prot() const
|
||||
void TPassive_mask::add_row_err_forn(int forn_code, TSheet_field& sf_err, TString& denom)
|
||||
{
|
||||
TToken_string& row_err = sf_err.row(-1);
|
||||
row_err.add(fp_db().sq_get("COD_PAESE"), 0);
|
||||
row_err.add(fp_db().sq_get("COD_PAESE"), 1);
|
||||
row_err.add(fp_db().sq_get("P_IVA"));
|
||||
row_err.add(fp_db().sq_get("COD_FISC"));
|
||||
row_err.add(denom);
|
||||
|
||||
switch (forn_code){
|
||||
case err_match_db:
|
||||
row_err.add("Salvato in database ma non corrisponde a un fornitore codificato.");
|
||||
row_err.add("Salvato in database ma non corrisponde a un fornitore codificato. (Nuovo fornitore disabilitato)");
|
||||
break;
|
||||
case no_forn:
|
||||
row_err.add("Non trovato fornitore per la P.IVA.");
|
||||
break;
|
||||
case no_match_cf:
|
||||
row_err.add("Trovato fornitore ma il codice fiscale non corrisponde.");
|
||||
row_err.add("Trovato fornitore ma il codice fiscale non corrisponde. Aggiornare?");
|
||||
break;
|
||||
case no_cf:
|
||||
row_err.add("Fornitore senza P. IVA, non trovato il codice fiscale");
|
||||
@ -258,15 +276,15 @@ int TPassive_mask::find_fornitore(TLocalisamfile& clifo)
|
||||
const TString fppro_tipocf = fp_db().sq_get("TIPO_CF");
|
||||
TString fppro_codcf = fp_db().sq_get("COD_CLIFOR");
|
||||
|
||||
// Cerco se il fornitore è presente in Campo
|
||||
// Cerco se il fornitore è presente in Campo
|
||||
int found_clifo = -1;
|
||||
|
||||
if (fppro_codcf == "17")
|
||||
bool simo = true;
|
||||
|
||||
TString piva;
|
||||
// Leggo dall FPPRO se è già stato salvato il fornitore
|
||||
// Se è già salvato nell FPPRO ricerco in Campo col codice fornitore (chiave 1)
|
||||
// Leggo dall FPPRO se è già stato salvato il fornitore
|
||||
// Se è già salvato nell FPPRO ricerco in Campo col codice fornitore (chiave 1)
|
||||
if (fppro_tipocf == "F" && !fppro_codcf.blank())
|
||||
{
|
||||
clifo.setkey(1);
|
||||
@ -274,7 +292,7 @@ int TPassive_mask::find_fornitore(TLocalisamfile& clifo)
|
||||
// Se trovo dall FPPRO setto a 0
|
||||
clifo.read() == NOERR ? found_clifo = 0 : found_clifo = -3;
|
||||
}
|
||||
else if (paa_codpaese.full() && (piva = paa_piva).full()) // Se non c'è nell FPPRO ricerco con chiave 5
|
||||
else if (paa_codpaese.full() && (piva = paa_piva).full()) // Se non c'è nell FPPRO ricerco con chiave 5
|
||||
{
|
||||
if (piva == "01903590154")
|
||||
bool simo = true;
|
||||
@ -289,10 +307,10 @@ int TPassive_mask::find_fornitore(TLocalisamfile& clifo)
|
||||
clifo.put(CLI_STATOPAIV, "");
|
||||
clifo.read() == NOERR ? found_clifo = 2 : found_clifo = -5; // Se trovo con partita iva setto a 2
|
||||
}
|
||||
// Se trovo con p.iva controllo il cod. fisc. e, se c'è da db e se c'è in clienti-fornitori, altrimenti vado avanti
|
||||
// Se trovo con p.iva controllo il cod. fisc. e, se c'è da db e se c'è in clienti-fornitori, altrimenti vado avanti
|
||||
if (found_clifo == 2 && paa_codfisc.full() && clifo.get(CLI_COFI).full())
|
||||
{
|
||||
if (clifo.get(CLI_COFI) == paa_codfisc) // Controllo che il cod fisc (se c'è) corrisponda
|
||||
if (clifo.get(CLI_COFI) == paa_codfisc) // Controllo che il cod fisc (se c'è) corrisponda
|
||||
found_clifo = 2;
|
||||
else
|
||||
found_clifo = -15;
|
||||
@ -333,7 +351,7 @@ void TPassive_mask::select_all(int sheet_field)
|
||||
}
|
||||
}
|
||||
|
||||
void TPassive_mask::salva_for()
|
||||
void TPassive_mask::salva_for() const
|
||||
{
|
||||
if(fp_db().sq_is_connect())
|
||||
{
|
||||
@ -374,6 +392,97 @@ void TPassive_mask::salva_for()
|
||||
}
|
||||
}
|
||||
|
||||
void TPassive_mask::new_forn()
|
||||
{
|
||||
TSheet_field& sf = sfield(F_ERR);
|
||||
TString newf = "fpnewf";
|
||||
FOR_EACH_SHEET_ROW(sf, nr, row)
|
||||
{
|
||||
int cod_forn = _forn_code.get_int(nr); // Prendo codice di errore associazione fornitore
|
||||
|
||||
int n_row_elenco = _list_fatt_err.get_int(nr); // Prendo che numero di riga a cui mi riferisco in fatture
|
||||
TSheet_field& f_docs = sfield(F_DOCS); // Prendo SheetField da elenco fatture
|
||||
TToken_string& row_elenco_fatt = f_docs.row(n_row_elenco); // Prendo riga dall'elenco delle fatture
|
||||
TToken_string keys(row_elenco_fatt.get(f_docs.cid2index(S_PROKEY)), ';'); // Dalla riga leggo la chiave del db
|
||||
|
||||
if (row->starts_with("X") && (cod_forn == no_forn || cod_forn == no_match_cf || cod_forn == no_cf))
|
||||
{
|
||||
TString query; query << "SELECT PU_PEC AS PEC\n" <<
|
||||
"FROM PAA3200F\n" <<
|
||||
"WHERE PU_KEYPRGINVIO = '" << keys.get();
|
||||
query << "' AND PU_KEYHEADERFATT = '" << keys.get();
|
||||
query << "' AND PU_KEYBODYFATT = '" << keys.get() << "'";
|
||||
fp_db().sq_set_exec(query);
|
||||
TString pec = fp_db().sq_get("PEC");
|
||||
|
||||
TString num; num.format("%04d", nr);
|
||||
TFilename newf_ini;
|
||||
TString temp_path = newf_ini.tempdir();
|
||||
newf_ini.tempdir() << "\\" << newf << num << ".ini";
|
||||
TConfig forn_conf(newf_ini, "Transaction");
|
||||
|
||||
|
||||
forn_conf.set("Action", "INSERT");
|
||||
|
||||
forn_conf.set_paragraph("20");
|
||||
forn_conf.set("TIPOCF", "F");
|
||||
forn_conf.set("COFI", row->get(sf.cid2index(S_CODFIERR)));
|
||||
forn_conf.set("PAIV", row->get(sf.cid2index(S_PIVAERR)));
|
||||
forn_conf.set("PEC", pec);
|
||||
forn_conf.set("RAGSOC", row->get(sf.cid2index(S_RAGSERR)));
|
||||
forn_conf.set("STATOPAIV", row_elenco_fatt.get(sf.cid2index(S_STATOPAIV)));
|
||||
|
||||
forn_conf.set_paragraph("17");
|
||||
forn_conf.set("TIPOCF", "F");
|
||||
forn_conf.set("RAGGOR", "O");
|
||||
forn_conf.set("PADESTIN", row_elenco_fatt.get(sf.cid2index(S_CODSDI)));
|
||||
|
||||
TExternal_app app(TString("cg0 -1 -i") << temp_path << "\\" << newf << "*" << ".ini" << " /u" << user());
|
||||
app.run();
|
||||
row->add("", 0);
|
||||
}
|
||||
}
|
||||
|
||||
sf.force_update();
|
||||
}
|
||||
|
||||
void TPassive_mask::aggiorna_forn()
|
||||
{
|
||||
TSheet_field& sf = sfield(F_ERR);
|
||||
TString newf = "fpaggf";
|
||||
FOR_EACH_SHEET_ROW(sf, nr, row)
|
||||
{
|
||||
int cod_forn = _forn_code.get_int(nr); // Prendo codice di errore associazione fornitore
|
||||
|
||||
int n_row_elenco = _list_fatt_err.get_int(nr); // Prendo che numero di riga a cui mi riferisco in fatture
|
||||
TSheet_field& f_docs = sfield(F_DOCS); // Prendo SheetField da elenco fatture
|
||||
TToken_string& row_elenco_fatt = f_docs.row(n_row_elenco); // Prendo riga dall'elenco delle fatture
|
||||
|
||||
if (row->starts_with("X") && cod_forn == no_match_cf)
|
||||
{
|
||||
TString num; num.format("%04d", nr);
|
||||
TFilename newf_ini;
|
||||
TString temp_path = newf_ini.tempdir();
|
||||
newf_ini.tempdir() << "\\" << newf << num << ".ini";
|
||||
TConfig forn_conf(newf_ini, "Transaction");
|
||||
|
||||
forn_conf.set("Action", "MODIFY");
|
||||
|
||||
forn_conf.set_paragraph("20");
|
||||
forn_conf.set("TIPOCF", "F");
|
||||
forn_conf.set("COFI", row->get(sf.cid2index(S_CODFIERR)));
|
||||
forn_conf.set("CODCF", row_elenco_fatt.get(sf.cid2index(S_FORNITORE)));
|
||||
|
||||
TExternal_app app(TString("cg0 -1 -i") << temp_path << "\\" << newf << "*" << ".ini" << " /u" << user());
|
||||
message_box(TString("Sto andando a modificare il codice fiscale del fornitore:\n") << row->get(sf.cid2index(S_RAGSERR)));
|
||||
app.run();
|
||||
row->add("", 0);
|
||||
}
|
||||
}
|
||||
sf.force_update();
|
||||
}
|
||||
|
||||
|
||||
bool TPassive_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
@ -397,18 +506,26 @@ bool TPassive_mask::on_field_event(TOperable_field& o, TField_event e, long joll
|
||||
case elenco_fe:
|
||||
select_all(F_DOCS);
|
||||
break;
|
||||
case elenco_err:
|
||||
select_all(F_ERR);
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
break;
|
||||
case DLG_SAVEREC:
|
||||
if (e == fe_button)
|
||||
switch(curr_page())
|
||||
{
|
||||
case elenco_fe:
|
||||
if(curr_page() == elenco_fe)
|
||||
salva_for();
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
break;
|
||||
case DLG_NEWREC:
|
||||
if(e == fe_button)
|
||||
if(curr_page() == elenco_err)
|
||||
new_forn();
|
||||
break;
|
||||
case DLG_RECALC:
|
||||
if (e == fe_button)
|
||||
if (curr_page() == elenco_err)
|
||||
aggiorna_forn();
|
||||
break;
|
||||
case F_DATAINI:
|
||||
if (e == fe_init)
|
||||
|
@ -10,18 +10,11 @@
|
||||
#define S_SELCODPROT 101
|
||||
#define S_CODPROT 102
|
||||
|
||||
//#define F_DOCUMENTI_TIPO 301
|
||||
//#define S_SELCODNUM 101
|
||||
//#define S_TIPODOCSEL 102
|
||||
//#define S_DASTATO 103
|
||||
//#define S_ASTATO 104
|
||||
//#define S_TIPODOCSDI 105
|
||||
|
||||
#define F_DOCS 201
|
||||
|
||||
#define S_SELECTED 101
|
||||
#define S_ANNO 102
|
||||
#define S_CODSDI 103
|
||||
#define S_TIPODOCSDI 103
|
||||
#define S_NDOC 104
|
||||
#define S_DATADOC 105
|
||||
#define S_TOTDOC 106
|
||||
@ -32,7 +25,7 @@
|
||||
#define S_PARIVA 111
|
||||
#define S_CODFISC 112
|
||||
#define S_ATTACH 113
|
||||
#define S_COFI 114
|
||||
#define S_CODSDI 114
|
||||
#define S_RAGXML 115
|
||||
#define S_NPROT 116
|
||||
#define S_PROKEY 117
|
||||
@ -40,8 +33,9 @@
|
||||
|
||||
#define F_ERR 301
|
||||
|
||||
#define S_STATOERR 101
|
||||
#define S_PIVAERR 102
|
||||
#define S_CODFIERR 103
|
||||
#define S_RAGSERR 104
|
||||
#define S_DESCERR 105
|
||||
#define S_SELECTF 101
|
||||
#define S_STATOERR 102
|
||||
#define S_PIVAERR 103
|
||||
#define S_CODFIERR 104
|
||||
#define S_RAGSERR 105
|
||||
#define S_DESCERR 106
|
@ -15,6 +15,19 @@ BEGIN
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
BUTTON DLG_NEWREC 10 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Nuovo"
|
||||
PICTURE BMP_NEWREC
|
||||
PICTURE BMP_NEWRECDN
|
||||
END
|
||||
|
||||
BUTTON DLG_RECALC 10 2
|
||||
BEGIN
|
||||
PROMPT -13 -11 "Aggiorna"
|
||||
PICTURE BMP_RECALC
|
||||
END
|
||||
|
||||
#include <helpbar.h>
|
||||
|
||||
ENDPAGE
|
||||
@ -42,7 +55,6 @@ BEGIN
|
||||
ITEM "Codice\nProtocol.@12"
|
||||
END
|
||||
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Elenco Fatture" 0 2 0 0
|
||||
@ -76,6 +88,7 @@ PAGE "Errore Fornitori" 0 2 0 0
|
||||
SPREADSHEET F_ERR
|
||||
BEGIN
|
||||
PROMPT 0 2 ""
|
||||
ITEM "@1"
|
||||
ITEM "Stato\nP.IVA@5"
|
||||
ITEM "P. IVA@16"
|
||||
ITEM "Cod. Fiscale@16"
|
||||
@ -87,25 +100,41 @@ ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
|
||||
PAGE "Spread protocol " 0 2 0 0
|
||||
PAGE "Spread protocol " -1 -1 50 5
|
||||
|
||||
BOOLEAN S_SELCODPROT
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
PROMPT 1 1 "Seleziona Protocollo"
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
STRING S_CODPROT 12
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
PROMPT 1 3 "Codice Protocollo"
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "Fatture Passive" 0 0 0 2
|
||||
|
||||
BUTTON DLG_OK 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_USER 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Collega"
|
||||
PICTURE TOOL_LINK
|
||||
END
|
||||
|
||||
|
||||
BUTTON DLG_CANCEL 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
@ -114,19 +143,19 @@ PAGE "Documento" -1 -1 78 9
|
||||
|
||||
BOOLEAN S_SELECTED
|
||||
BEGIN
|
||||
PROMPT 1 8 ""
|
||||
PROMPT 1 0 ""
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
NUMBER S_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 1 2 "Anno "
|
||||
PROMPT 1 1 "Anno "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
LIST S_CODSDI 35
|
||||
LIST S_TIPODOCSDI 35
|
||||
BEGIN
|
||||
PROMPT 41 2 "Tipo Doc SDI"
|
||||
PROMPT 12 1 "Tipo Doc SDI"
|
||||
ITEM "TD01|TD01 Fattura"
|
||||
ITEM "TD02|TD02 Acconto/Anticipo su fattura"
|
||||
ITEM "TD03|TD03 Acconto/Anticipo su parcella"
|
||||
@ -134,30 +163,30 @@ BEGIN
|
||||
ITEM "TD05|TD05 Nota di debito"
|
||||
ITEM "TD06|TD06 Parcella"
|
||||
ITEM "TD20|TD20 Autofattura"
|
||||
FLAG "D"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER S_NDOC 11
|
||||
BEGIN
|
||||
PROMPT 1 3 "Numero "
|
||||
PROMPT 1 2 "Numero Doc. "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE S_DATADOC
|
||||
BEGIN
|
||||
PROMPT 21 3 "Data "
|
||||
PROMPT 20 0 "Data Doc. "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER S_TOTDOC 11 3
|
||||
BEGIN
|
||||
PROMPT 26 3 "Data "
|
||||
PROMPT 26 2 "Totale Doc. "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN S_FPPRO
|
||||
BEGIN
|
||||
PROMPT 28 3 "Salvato"
|
||||
PROMPT 1 3 "Salvato in FP-PRO"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
@ -177,9 +206,9 @@ BEGIN
|
||||
DISPLAY "Partita IVA@11" PAIV
|
||||
OUTPUT S_FORNITORE CODCF
|
||||
OUTPUT S_RAGSOC RAGSOC
|
||||
ADD RUN cg0 -1 F S_FORNITORE
|
||||
HELP "Codice relativo al cliente o fornitore"
|
||||
MESSAGE COPY,2@
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING S_RAGSOC 50
|
||||
@ -198,7 +227,6 @@ BEGIN
|
||||
HELP "Prima parte della ragione sociale o cognome"
|
||||
MESSAGE COPY,3@
|
||||
WARNING "Manca la ragione sociale"
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING S_STATOPAIV 2
|
||||
@ -218,7 +246,7 @@ END
|
||||
|
||||
STRING S_PARIVA 50 20
|
||||
BEGIN
|
||||
PROMPT 1 5 ""
|
||||
PROMPT 10 5 "P. IVA"
|
||||
KEY 5
|
||||
USE LF_CLIFO KEY 5
|
||||
INPUT TIPOCF "F"
|
||||
@ -237,7 +265,7 @@ END
|
||||
|
||||
STRING S_CODFISC 50 20
|
||||
BEGIN
|
||||
PROMPT 1 5 ""
|
||||
PROMPT 1 6 "Cod. Fisc."
|
||||
FLAGS "U"
|
||||
KEY 4
|
||||
USE LF_CLIFO KEY 4
|
||||
@ -253,40 +281,39 @@ BEGIN
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING S_COFI 20
|
||||
STRING S_CODSDI 20
|
||||
BEGIN
|
||||
PROMPT 1 6 ""
|
||||
PROMPT 35 6 "Cod. Destinatario"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN S_ATTACH
|
||||
BEGIN
|
||||
PROMPT 1 8 "Documenti in allegato"
|
||||
PROMPT 1 7 "Documenti in allegato"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING S_RAGXML 50
|
||||
BEGIN
|
||||
PROMPT 21 4 ""
|
||||
FLAG "D"
|
||||
PROMPT 1 8 ""
|
||||
FLAGS "D"
|
||||
HELP "Ragione sociale scritta nell'xml"
|
||||
END
|
||||
|
||||
STRING S_NPROT 22
|
||||
BEGIN
|
||||
PROMPT 1 5 ""
|
||||
PROMPT 1 9 "Numero Protocollo"
|
||||
HELP "Numero Protocollo"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING S_PROKEY 80
|
||||
BEGIN
|
||||
PROMPT 1 5 ""
|
||||
HELP "Numero Protocollo"
|
||||
PROMPT 1 10 "db key"
|
||||
HELP "Chiave database"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "Documento" 0 0 0 2
|
||||
@ -314,34 +341,40 @@ ENDMASK
|
||||
|
||||
PAGE "Riga Errore" -1 -1 69 14
|
||||
|
||||
BOOLEAN S_SELECTF
|
||||
BEGIN
|
||||
PROMPT 21 4 "Seleziona Fornitore da salvare"
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
STRING S_STATOERR 2
|
||||
BEGIN
|
||||
PROMPT 21 4 ""
|
||||
FLAG "D"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING S_PIVAERR 50 20
|
||||
BEGIN
|
||||
PROMPT 21 4 ""
|
||||
FLAG "D"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING S_CODFIERR 50 20
|
||||
BEGIN
|
||||
PROMPT 21 4 ""
|
||||
FLAG "D"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING S_RAGSERR 50
|
||||
BEGIN
|
||||
PROMPT 21 4 ""
|
||||
FLAG "D"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING S_DESCERR 100
|
||||
BEGIN
|
||||
PROMPT 21 4 ""
|
||||
FLAG "D"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
|
||||
|
@ -147,15 +147,28 @@ private:
|
||||
|
||||
|
||||
protected:
|
||||
bool initialize(const TDocumentoEsteso& doc);
|
||||
|
||||
/**< Funzioni di controllo */
|
||||
/**< Controlli di testata, non è const per il calcolo della codizione di pagamento */
|
||||
bool check_initial(TDocumentoEsteso& doc);
|
||||
/**< Controllo di riga */
|
||||
bool check_row(const TRiga_documento& rdoc);
|
||||
/**< Controllo riepilogo IVA */
|
||||
bool check_riepilogo(const TDocumentoEsteso& doc, const TRiepilogo_iva& riva);
|
||||
|
||||
|
||||
bool initialize(TDocumentoEsteso& doc);
|
||||
bool parse_sconto(const TString& formula, TToken_string& sconti) const;
|
||||
static bool get_bnp_iban(const TString& abi, const TString& cab, int prg, TString& iban);
|
||||
bool get_bank(const TDocumento& doc, TString& iban, TString& abi, TString& cab, TString& istituto) const;
|
||||
bool get_bank(TDocumento& doc, TString& iban, TString& abi, TString& cab, TString& istituto) const;
|
||||
bool get_bank_presentazione(const TDocumento& doc, TString& iban, TString& abi, TString& cab, TString& istituto) const;
|
||||
bool get_bank_appoggio(const TDocumento& doc, TString& iban, TString& abi, TString& cab, TString& istituto) const;
|
||||
const TString& descrizione(const TRiga_documento& rdoc);
|
||||
const TRectype& cco(const TRectype& doc) const; // Contratto/Convenzione/Offerta
|
||||
|
||||
void log(int severity, const char* msg);
|
||||
const char* natura(const TString& codiva) const;
|
||||
const char* get_esigibilita_iva(const TDocumentoEsteso& doc);
|
||||
void set_IVA(TString codiva, TPaf_record& paf) const;
|
||||
void set_IVA(const TRiga_documento& rdoc, TPaf_record& paf) const;
|
||||
bool add_row_art(long& riga_art, const TString& codice_tipo, const TString& codice_valore, TPaf_record& paf);
|
||||
@ -211,6 +224,7 @@ public:
|
||||
const bool get_esp_est() const;
|
||||
const TString& get_esp_est_cod() const;
|
||||
const bool is_f8() const;
|
||||
const bool get_check_not_block() const;
|
||||
|
||||
// Setters
|
||||
void set_db_indirizzo(const TString& ind) const;
|
||||
@ -226,6 +240,7 @@ public:
|
||||
void set_esp_est(bool esp_est) const;
|
||||
void set_esp_est_cod(const TString& esp_est_cod) const;
|
||||
void set_f8(bool f8) const;
|
||||
void set_check_not_block(bool not_block) const;
|
||||
};
|
||||
|
||||
inline TFP_settings& fp_settings()
|
||||
|
@ -190,7 +190,7 @@ bool get_coddest(const char tipocf, const long codcf, TString& coddest, TString&
|
||||
}
|
||||
else
|
||||
pec = "";
|
||||
// Dopo la versione 1.2 torna sempre true
|
||||
|
||||
return coddest.full();
|
||||
}
|
||||
inline const TString& no_special(char a)
|
||||
@ -538,47 +538,74 @@ bool TDoc_fp::get_bnp_iban(const TString& abi, const TString& cab, int nprog, TS
|
||||
iban = bnp.get("S3");
|
||||
return err == NOERR;
|
||||
}
|
||||
bool TDoc_fp::get_bank(const TDocumento& doc, TString& iban, TString& abi, TString& cab, TString& istituto) const
|
||||
bool TDoc_fp::get_bank(TDocumento& doc, TString& iban, TString& abi, TString& cab, TString& istituto) const
|
||||
{
|
||||
bool found = false;
|
||||
abi = doc.get(DOC_CODABIP);
|
||||
cab = doc.get(DOC_CODCABP);
|
||||
int prg = doc.get_int(DOC_PROGBNP);
|
||||
bool found = false;
|
||||
if(doc.pagamento().tipo_rata(0) == TTipo_pag::_bonfico)
|
||||
{
|
||||
found = get_bank_presentazione(doc, iban, abi, cab, istituto);
|
||||
}
|
||||
else if(doc.pagamento().tipo_rata(0) == TTipo_pag::_ric_ban || doc.pagamento().tipo_rata(0) == TTipo_pag::_rid)
|
||||
{
|
||||
found = get_bank_appoggio(doc, iban, abi, cab, istituto);
|
||||
}
|
||||
return found;
|
||||
}
|
||||
|
||||
bool TDoc_fp::get_bank_presentazione(const TDocumento& doc, TString& iban, TString& abi, TString& cab, TString& istituto) const
|
||||
{
|
||||
bool found = false;
|
||||
abi = doc.get(DOC_CODABIP);
|
||||
cab = doc.get(DOC_CODCABP);
|
||||
int prg = doc.get_int(DOC_PROGBNP);
|
||||
found = abi.full() && cab.full();
|
||||
if (found)
|
||||
get_bnp_iban(abi, cab, prg, iban);
|
||||
if (!found) // Se non trovo banca su CFBAN la cerco su CFVEN
|
||||
{
|
||||
const TRectype& cfven = doc.clifor().vendite();
|
||||
abi = cfven.get(CFV_CODABIPR);
|
||||
cab = cfven.get(CFV_CODCABPR);
|
||||
found = abi.full() && cab.full();
|
||||
if (found)
|
||||
get_bnp_iban(abi, cab, prg, iban);
|
||||
if (!found) // Se non trovo banca sul DOC la cerco su CFBAN
|
||||
{
|
||||
TToken_string key;
|
||||
key.add("C");
|
||||
key.add(doc.codcf());
|
||||
key.add("N");
|
||||
key.add(1);
|
||||
const TRectype& cfban = cache().get(LF_CFBAN, key);
|
||||
if (!cfban.empty())
|
||||
{
|
||||
abi = cfban.get(CFBAN_ABI);
|
||||
cab = cfban.get(CFBAN_CAB);
|
||||
prg = cfban.get_int(CFBAN_PROGPR);
|
||||
found = abi.full() && cab.full();
|
||||
iban = cfban.get(CFBAN_IBAN);
|
||||
if (found && iban.blank())
|
||||
get_bnp_iban(abi, cab, prg, iban);
|
||||
}
|
||||
}
|
||||
if (!found) // Se non trovo banca su CFBAN la cerco su CFVEN
|
||||
{
|
||||
const TRectype& cfven = doc.clifor().vendite();
|
||||
abi = cfven.get(CFV_CODABIPR);
|
||||
cab = cfven.get(CFV_CODCABPR);
|
||||
found = abi.full() && cab.full();
|
||||
if (found)
|
||||
get_bnp_iban(abi, cab, 0, iban);
|
||||
}
|
||||
if (found)
|
||||
istituto = cache().get("%BAN", abi, "S0");
|
||||
return found;
|
||||
get_bnp_iban(abi, cab, 0, iban);
|
||||
}
|
||||
if (found)
|
||||
istituto = cache().get("%BAN", abi, "S0");
|
||||
return found;
|
||||
}
|
||||
|
||||
bool TDoc_fp::get_bank_appoggio(const TDocumento& doc, TString& iban, TString& abi, TString& cab,
|
||||
TString& istituto) const
|
||||
{
|
||||
bool found = false;
|
||||
abi = doc.get(DOC_CODABIA);
|
||||
cab = doc.get(DOC_CODCABA);
|
||||
iban = doc.get(DOC_IBAN);
|
||||
found = iban.full();
|
||||
if (!found) // Se non trovo banca sul DOC la cerco su CFBAN
|
||||
{
|
||||
TToken_string key;
|
||||
key.add("C");
|
||||
key.add(doc.codcf());
|
||||
key.add("N");
|
||||
key.add(1);
|
||||
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);
|
||||
if (found && iban.blank())
|
||||
get_bnp_iban(abi, cab, -1, iban);
|
||||
}
|
||||
}
|
||||
if (found)
|
||||
istituto = cache().get("%BAN", abi, "S0");
|
||||
return found;
|
||||
}
|
||||
|
||||
const TString& TDoc_fp::descrizione(const TRiga_documento& rdoc)
|
||||
{
|
||||
if (rdoc.get_bool(RDOC_DESCLUNGA))
|
||||
@ -696,7 +723,91 @@ bool TDoc_fp::save_paf()
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TDoc_fp::initialize(const TDocumentoEsteso& doc)
|
||||
bool TDoc_fp::check_initial(TDocumentoEsteso& doc)
|
||||
{
|
||||
bool ok = true;
|
||||
static TString msg;
|
||||
|
||||
if (_coddest.len() != 6 && _coddest.len() != 7)
|
||||
{
|
||||
log(1, "Il codice destinatario ha una lunghezza non conforme.");
|
||||
ok = false;
|
||||
}
|
||||
|
||||
if (_rec_clifo.get(CLI_PAIV).empty() && _rec_clifo.get(CLI_COFI).empty())
|
||||
{
|
||||
log(1, "Sia la partita IVA che il codice fiscale del cessionario committente sono vuoti, almeno uno dei due deve essere valorizzato.");
|
||||
ok = false;
|
||||
}
|
||||
|
||||
TPagamento& pag = doc.pagamento();
|
||||
if(pag.cond_pag_sdi().empty())
|
||||
{
|
||||
|
||||
msg.cut(0) << "Non è valorizzata la condizione di pagamento SDI (TP01, TP02, TP03) per la condizione di pagamento " << pag.code();
|
||||
log(1, msg);
|
||||
ok = false;
|
||||
}
|
||||
|
||||
for (int nr = 0; nr < doc.scadenze().items(); nr++)
|
||||
{
|
||||
const int rp = nr < pag.n_rate() ? nr : 0;
|
||||
static TString key_class; key_class.cut(0) << pag.tipo_rata(rp) << pag.ulc_rata(rp);
|
||||
|
||||
if(cache().get("%CLR", key_class, "S12").empty())
|
||||
{
|
||||
msg.cut(0) << "Non è valorizzata la tipologia di pagamento SDI (MPXX) per la condizione di pagamento " << pag.code();
|
||||
log(1, msg);
|
||||
ok = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TDoc_fp::check_row(const TRiga_documento& rdoc)
|
||||
{
|
||||
bool ok = false;
|
||||
static TString msg;
|
||||
|
||||
if(rdoc.is_spese())
|
||||
{
|
||||
const TSpesa_prest& spesa = rdoc.spesa();
|
||||
if(spesa.perc().is_zero())
|
||||
{
|
||||
msg.cut(0) << "É corretto che per la spesa " << spesa.codice() << " la percentuale sia zero?";
|
||||
log(1, msg);
|
||||
}
|
||||
}
|
||||
|
||||
const TCodiceIVA& codice_iva = rdoc.iva();
|
||||
if (codice_iva.codice().full() && codice_iva.percentuale() == ZERO && codice_iva.natura().empty())
|
||||
{
|
||||
msg.cut(0) << "Impossibile avere la natura non valorizzata a fronte di una aliquota con percentuale zero. Codice IVA: "; msg << codice_iva.codice();
|
||||
log(1, msg);
|
||||
ok = false;
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TDoc_fp::check_riepilogo(const TDocumentoEsteso& doc, const TRiepilogo_iva& riva)
|
||||
{
|
||||
bool ok = true;
|
||||
static TString msg;
|
||||
|
||||
if(*get_esigibilita_iva(doc) == 'S' && riva.cod_iva().natura() == "N6")
|
||||
{
|
||||
msg.cut(0) << "Impossibile avere un documento con scissione dei pagamenti e natura iva N6, codice: " << riva.cod_iva().codice();
|
||||
log(1, msg);
|
||||
ok = false;
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TDoc_fp::initialize(TDocumentoEsteso& doc)
|
||||
{
|
||||
// Azzero
|
||||
_hfatt.cut(0);
|
||||
@ -732,7 +843,10 @@ bool TDoc_fp::initialize(const TDocumentoEsteso& doc)
|
||||
#ifndef DBG
|
||||
_is_pa = doc.clifor().get_int("ALLEG") == 7;
|
||||
if (!get_coddest(doc.clifor().tipo(), doc.clifor().codice(), _coddest, _pec))
|
||||
{
|
||||
log(1, "Impossibile trovare il codice destinatario per la fattura");
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
_is_pa = true;
|
||||
_coddest = "WSUHKZ";
|
||||
@ -756,7 +870,7 @@ bool TDoc_fp::initialize(const TDocumentoEsteso& doc)
|
||||
// Azzero indici
|
||||
_index_cassa_previdenziale = 1;
|
||||
|
||||
return true;
|
||||
return check_initial(doc) || fp_settings().get_check_not_block();
|
||||
}
|
||||
|
||||
const TRectype& TDoc_fp::cco(const TRectype& doc) const
|
||||
@ -844,6 +958,18 @@ const char* TDoc_fp::natura(const TString& codiva) const
|
||||
return cache().get("%IVA", codiva, "S12");
|
||||
}
|
||||
|
||||
const char* TDoc_fp::get_esigibilita_iva(const TDocumentoEsteso& doc)
|
||||
{
|
||||
// Esigibilità IVA: Immediata, Differita, Split payment
|
||||
const char* eiva = "I";
|
||||
if (doc.is_split_payment())
|
||||
eiva = "S";
|
||||
else if (doc.get_bool(DOC_LIQDIFF) || doc.get_bool(DOC_IVAXCASSA))
|
||||
eiva = "D";
|
||||
|
||||
return eiva;
|
||||
}
|
||||
|
||||
void TDoc_fp::set_IVA(TString codiva, TPaf_record& paf) const
|
||||
{
|
||||
if (codiva.empty())
|
||||
@ -1106,6 +1232,7 @@ bool TDoc_fp::export_paf0100f()
|
||||
paf0100f.set("P1_TELEFONO", tel);
|
||||
paf0100f.set("P1_MAIL", get_firm().get(NDT_MAIL));
|
||||
paf0100f.set("P1_GESTIONE", "D");
|
||||
paf0100f.set("P1_ERRINT", "");
|
||||
// </DatiTrassmissione>
|
||||
return insert(paf0100f);
|
||||
}
|
||||
@ -1411,46 +1538,50 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
|
||||
FOR_EACH_PHYSICAL_RDOC(doc, r, rdoc)
|
||||
{
|
||||
// Controllo la riga
|
||||
if (check_row(*rdoc) && !fp_settings().get_check_not_block())
|
||||
return false;
|
||||
|
||||
bool skip_riga = false;
|
||||
paf1800f.reset();
|
||||
paf1800f.set("PI_KEYHEADERFATT", _hfatt);
|
||||
paf1800f.set("PI_KEYBODYFATT", _bfatt);
|
||||
paf1800f.set("PI_NUMEROLINEA", riga);
|
||||
const TString& descrizione_riga = descrizione(*rdoc);
|
||||
if (descrizione_riga.empty())
|
||||
continue;
|
||||
paf3000f.reset();
|
||||
paf3000f.set("PT_KEYHEADERFATT", _hfatt);
|
||||
paf3000f.set("PT_KEYBODYFATT", _bfatt);
|
||||
paf3000f.set("PT_RIFNUMLINEA", riga);
|
||||
paf3000f.set("PT_COMMENTO", descrizione_riga);
|
||||
// <CodiceArticolo>
|
||||
if (rdoc->is_articolo())
|
||||
{
|
||||
TString codartmag = rdoc->get(RDOC_CODARTMAG);
|
||||
TString codart = rdoc->get(RDOC_CODART);
|
||||
long riga_art = 0;
|
||||
if (codart.full())
|
||||
paf1800f.reset();
|
||||
paf1800f.set("PI_KEYHEADERFATT", _hfatt);
|
||||
paf1800f.set("PI_KEYBODYFATT", _bfatt);
|
||||
paf1800f.set("PI_NUMEROLINEA", riga);
|
||||
const TString& descrizione_riga = descrizione(*rdoc);
|
||||
if (descrizione_riga.empty())
|
||||
continue;
|
||||
paf3000f.reset();
|
||||
paf3000f.set("PT_KEYHEADERFATT", _hfatt);
|
||||
paf3000f.set("PT_KEYBODYFATT", _bfatt);
|
||||
paf3000f.set("PT_RIFNUMLINEA", riga);
|
||||
paf3000f.set("PT_COMMENTO", descrizione_riga);
|
||||
// <CodiceArticolo>
|
||||
if (rdoc->is_articolo())
|
||||
{
|
||||
if (codartmag.full())
|
||||
TString codartmag = rdoc->get(RDOC_CODARTMAG);
|
||||
TString codart = rdoc->get(RDOC_CODART);
|
||||
long riga_art = 0;
|
||||
if (codart.full())
|
||||
{
|
||||
paf1900f.reset();
|
||||
paf1900f.set("PY_KEYHEADERFATT", _hfatt);
|
||||
paf1900f.set("PY_KEYBODYFATT", _bfatt);
|
||||
paf1900f.set("PY_KEYNLINEA", riga);
|
||||
ok &= add_row_art(riga_art, "Codice articolo interno", codartmag, paf1900f);
|
||||
}
|
||||
// Se il codice articolo del magazzino è diverso quello è del cliente
|
||||
if (codart.full() && codart != codartmag)
|
||||
{
|
||||
paf1900f.reset();
|
||||
paf1900f.set("PY_KEYHEADERFATT", _hfatt);
|
||||
paf1900f.set("PY_KEYBODYFATT", _bfatt);
|
||||
paf1900f.set("PY_KEYNLINEA", riga);
|
||||
ok &= add_row_art(riga_art, "Codice articolo cliente", codart, paf1900f);
|
||||
if (codartmag.full())
|
||||
{
|
||||
paf1900f.reset();
|
||||
paf1900f.set("PY_KEYHEADERFATT", _hfatt);
|
||||
paf1900f.set("PY_KEYBODYFATT", _bfatt);
|
||||
paf1900f.set("PY_KEYNLINEA", riga);
|
||||
ok &= add_row_art(riga_art, "Codice articolo interno", codartmag, paf1900f);
|
||||
}
|
||||
// Se il codice articolo del magazzino è diverso quello è del cliente
|
||||
if (codart.full() && codart != codartmag)
|
||||
{
|
||||
paf1900f.reset();
|
||||
paf1900f.set("PY_KEYHEADERFATT", _hfatt);
|
||||
paf1900f.set("PY_KEYBODYFATT", _bfatt);
|
||||
paf1900f.set("PY_KEYNLINEA", riga);
|
||||
ok &= add_row_art(riga_art, "Codice articolo cliente", codart, paf1900f);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// </CodiceArticolo>
|
||||
if(rdoc->is_descrizione())
|
||||
{
|
||||
@ -1570,6 +1701,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
// Controllo se è una ritenuta fiscale
|
||||
if (sp.tipo_ritenuta() == 'F')
|
||||
{
|
||||
paf1800f.set("PI_RITENUTA", "SI");
|
||||
add_ritenuta(doc, rdoc->spesa(), paf0700f);
|
||||
}
|
||||
}
|
||||
@ -1842,17 +1974,16 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
paf2200f.set("PL_KEYHEADERFATT", _hfatt);
|
||||
paf2200f.set("PL_KEYBODYFATT", _bfatt);
|
||||
remove(paf2200f); // Cancella tutte le righe di riepilogo IVA
|
||||
const char* eiva = "I"; // Esigibilità IVA: Immediata, Differita, Split payment
|
||||
if (doc.is_split_payment())
|
||||
eiva = "S";
|
||||
else if (doc.get_bool(DOC_LIQDIFF) || doc.get_bool(DOC_IVAXCASSA))
|
||||
eiva = "D";
|
||||
const char* eiva = get_esigibilita_iva(doc);
|
||||
long num_riep = 0;
|
||||
TAssoc_array& tiva = doc.tabella_iva(false);
|
||||
FOR_EACH_ASSOC_OBJECT(tiva, obj, key, itm)
|
||||
{
|
||||
const TRiepilogo_iva& riva = *dynamic_cast<const TRiepilogo_iva*>(itm);
|
||||
|
||||
|
||||
if (!check_riepilogo(doc, riva) && !fp_settings().get_check_not_block())
|
||||
return false;
|
||||
|
||||
add_riepilogo_iva(paf2200f, riva.cod_iva(), eiva, riva.imponibile(), riva.imposta());
|
||||
}
|
||||
|
||||
@ -1895,10 +2026,10 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
TString8 abi, cab;
|
||||
if (get_bank(doc, iban, abi, cab, istituto))
|
||||
{
|
||||
paf2500f.set("PO_ISTFINANZ", istituto);
|
||||
paf2500f.set("PO_IBAN", iban);
|
||||
paf2500f.set("PO_ABI", abi);
|
||||
paf2500f.set("PO_CAB", cab);
|
||||
paf2500f.set("PO_ISTFINANZ", istituto);
|
||||
paf2500f.set("PO_IBAN", iban);
|
||||
paf2500f.set("PO_ABI", abi);
|
||||
paf2500f.set("PO_CAB", cab);
|
||||
}
|
||||
if (tipo_pag == 3 && cab.blank()) // Ricevuta bancaria
|
||||
log(2, TR("Non sono presenti ABI, CAB, IBAN per il pagamento"));
|
||||
@ -1908,15 +2039,15 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
}
|
||||
for (int nr = 0; nr < nrate; nr++)
|
||||
{
|
||||
paf2500f.set("PO_RIGA", long(nr + 1)); // Numero rata
|
||||
int rp = nr < pag.n_rate() ? nr : 0;
|
||||
static TString key_class; key_class.cut(0) << pag.tipo_rata(rp) << pag.ulc_rata(rp);
|
||||
paf2500f.set("PO_MODALITAPAGAM", cache().get("%CLR", key_class, "S12")); // Si assicura che il numero riga sia accettabile
|
||||
TToken_string& riga_scadenze = scad.row(nr); // Data|Importo
|
||||
paf2500f.set("PO_DATASCADENZA", TDate(riga_scadenze.get(0))); // Data scadenza
|
||||
paf2500f.set("PO_IMPORTO", converti_prezzo(real(riga_scadenze.get()))); // Importo rata
|
||||
paf2500f.set("PO_GESTIONE", "D");
|
||||
ok &= insert(paf2500f);
|
||||
paf2500f.set("PO_RIGA", long(nr + 1)); // Numero rata
|
||||
const int rp = nr < pag.n_rate() ? nr : 0;
|
||||
static TString key_class; key_class.cut(0) << pag.tipo_rata(rp) << pag.ulc_rata(rp);
|
||||
paf2500f.set("PO_MODALITAPAGAM", cache().get("%CLR", key_class, "S12")); // Si assicura che il numero riga sia accettabile
|
||||
TToken_string& riga_scadenze = scad.row(nr); // Data|Importo
|
||||
paf2500f.set("PO_DATASCADENZA", TDate(riga_scadenze.get(0))); // Data scadenza
|
||||
paf2500f.set("PO_IMPORTO", converti_prezzo(real(riga_scadenze.get()))); // Importo rata
|
||||
paf2500f.set("PO_GESTIONE", "D");
|
||||
ok &= insert(paf2500f);
|
||||
}
|
||||
// </DatiPagamento>
|
||||
if (_gestioneallegati)
|
||||
@ -1941,11 +2072,11 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
}
|
||||
else
|
||||
{
|
||||
//ve1 -2 {CODNUM} {ANNO} {PROVV} {NDOC}(-{ANDOC}) {TIPO_ELABORAZIONE} {TIPO_STAMPA}
|
||||
//ve1 -2 {CODNUM} {ANNO} {PROVV} {NDOC}(-{ANDOC}) {TIPO_ELABORAZIONE} {TIPO_STAMPA} {NUM_COPIE} {ARCHIVIAZIONE}
|
||||
// Costruisco la chiamata
|
||||
static TString commandline;
|
||||
commandline.cut(0) << "ve1 -2 " << doc.get(DOC_CODNUM) << ' ' << doc.get(DOC_ANNO)
|
||||
<< ' ' << doc.get(DOC_PROVV) << ' ' << doc.get(DOC_NDOC) << " X P"; // X: stampa su disco, P: provvisorio
|
||||
<< ' ' << doc.get(DOC_PROVV) << ' ' << doc.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)
|
||||
{
|
||||
|
@ -19,6 +19,7 @@
|
||||
#define FP_ESP_EST "espest"
|
||||
#define FP_ESP_EST_COD "espestcod"
|
||||
#define FP_F8 "f8"
|
||||
#define FP_CHECK_NOT_BLOCK "checknotblock"
|
||||
|
||||
// Sheet fp0300
|
||||
#define FP_SLD_COD "SLD"
|
||||
@ -112,6 +113,11 @@ const bool TFP_settings::is_f8() const
|
||||
return ini_get_bool(FILE_CONFIG, FILE_SECTION, FP_F8);
|
||||
}
|
||||
|
||||
const bool TFP_settings::get_check_not_block() const
|
||||
{
|
||||
return ini_get_bool(FILE_CONFIG, FILE_SECTION, FP_CHECK_NOT_BLOCK);
|
||||
}
|
||||
|
||||
void TFP_settings::set_db_indirizzo(const TString& ind) const
|
||||
{
|
||||
ini_set_string(FILE_CONFIG, FILE_SECTION, FP_IP, ind);
|
||||
@ -177,6 +183,11 @@ void TFP_settings::set_f8(const bool f8) const
|
||||
ini_set_bool(FILE_CONFIG, FILE_SECTION, FP_F8, f8);
|
||||
}
|
||||
|
||||
void TFP_settings::set_check_not_block(const bool not_block) const
|
||||
{
|
||||
ini_set_bool(FILE_CONFIG, FILE_SECTION, FP_CHECK_NOT_BLOCK, not_block);
|
||||
}
|
||||
|
||||
TRectype TFP_selected_docs::fill_rectype() const
|
||||
{
|
||||
TRectype r(LF_TABMOD);
|
||||
|
@ -1096,6 +1096,8 @@ class TReport_doc_app : public TSkeleton_application
|
||||
char _tipocf;
|
||||
bool _no_print_dlg;
|
||||
|
||||
enum {_disabled, _force, _auto} _arc_type;
|
||||
|
||||
protected:
|
||||
void add_cli_filter(TString& query, bool from) const;
|
||||
void add_data_filter(TString& query, bool from) const;
|
||||
@ -1398,6 +1400,10 @@ bool TReport_doc_app::print_loop(TRecordset& doc, TOutput_mode mode, bool final_
|
||||
const TCodice_numerazione& cn = cached_numerazione(codnum);
|
||||
arc = cn.auto_archive();
|
||||
}
|
||||
|
||||
// Controllo se devo archiviare in base ai parametri passati
|
||||
arc = _arc_type == _force || _arc_type == _auto && arc;
|
||||
|
||||
set_next_pdf(&doc);
|
||||
|
||||
TToken_string to, cc;
|
||||
@ -1648,6 +1654,11 @@ TReport_doc_app::TOutput_mode TReport_doc_app::key2mode(KEY k) const
|
||||
void TReport_doc_app::main_loop()
|
||||
{
|
||||
_no_print_dlg = false; // Normalmente mostra la GUI di stampa
|
||||
|
||||
_arc_type = _auto;
|
||||
|
||||
// Chiamata: ve1 -2 {CODNUM} {ANNO} {PROVV} {NDOC}(-{ANDOC}) {TIPO_ELABORAZIONE} {TIPO_STAMPA} {NUM_COPIE} {ARCHIVIAZIONE}
|
||||
|
||||
const int a = argc();
|
||||
if (a > 2)
|
||||
{
|
||||
@ -1697,6 +1708,24 @@ void TReport_doc_app::main_loop()
|
||||
_msk->set(F_NCOPIE, argv(8)); // Numero copie
|
||||
|
||||
print_selection(mode);
|
||||
|
||||
if(a > 9)
|
||||
{
|
||||
const TString arc_type = argv(9);
|
||||
if(arc_type == "A")
|
||||
{
|
||||
_arc_type = _auto;
|
||||
}
|
||||
else if(arc_type == "D")
|
||||
{
|
||||
_arc_type = _disabled;
|
||||
}
|
||||
else if(arc_type == "F")
|
||||
{
|
||||
_arc_type = _force;
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user