Merge branch 'R_10_00' of http://10.65.20.33/sirio/CAMPO/campo into R_10_00

This commit is contained in:
smen 2021-09-23 09:55:13 +02:00
commit 45d254e932
7 changed files with 58 additions and 13 deletions

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

@ -0,0 +1,3 @@
fp0.exe
I clienti privati esteri ( Tipo allegato 5 o 9 e Stato CF) compilato non devono più avere codice fiacle e patita IVA compilati.

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

@ -0,0 +1,19 @@
[Main]
Demo=0
[fp0]
File(0) = fp0.exe|X
Patch = 1080
Versione = 21511200
[fp]
Data = 09-09-2021
Descrizione = Fattura Elettronica
Dischi = 1
Moduli = cg,ve
OEM =
Patch = 1080
PostProcess =
PreProcess =
Versione = 21511200

BIN
cd/test/fp1080a1.zip Normal file

Binary file not shown.

View File

@ -935,11 +935,16 @@ bool TDoc_fp::check_initial(TDocumentoEsteso& doc)
log(1, "Il codice destinatario ha una lunghezza non conforme."); log(1, "Il codice destinatario ha una lunghezza non conforme.");
ok = false; ok = false;
} }
if (_rec_clifo.get(CLI_PAIV).empty() && _rec_clifo.get(CLI_COFI).empty())
const int alleg = _rec_clifo.get_int(CLI_ALLEG);
bool privato = (alleg == 5 || alleg == 9) && _rec_clifo.get(CLI_STATOCF).full();
if (_rec_clifo.get(CLI_PAIV).empty() && _rec_clifo.get(CLI_COFI).empty() && !privato)
{ {
log(1, "Sia la partita IVA che il codice fiscale del cessionario committente sono vuoti, almeno uno dei due deve essere valorizzato."); log(1, "Sia la partita IVA che il codice fiscale del cessionario committente sono vuoti, almeno uno dei due deve essere valorizzato.");
ok = false; ok = false;
} }
TPagamento& pag = doc.pagamento(); TPagamento& pag = doc.pagamento();
if(pag.cond_pag_sdi().empty()) if(pag.cond_pag_sdi().empty())
{ {

View File

@ -108,6 +108,15 @@ void TMotore_application::init_query_mode( TMask& m )
} }
} }
bool TMotore_application::can_make_doc_def()
{
static TToken_string __confirm_aut_users = "*";
if (__confirm_aut_users == "*")
__confirm_aut_users = ini_get_string(CONFIG_STUDIO, "VE", "AHUsers", "");
return __confirm_aut_users.blank() || __confirm_aut_users.find(user()) >= 0;
}
void TMotore_application::init_insert_mode( TMask& m ) void TMotore_application::init_insert_mode( TMask& m )
{ {
TDocumento_mask& dm = (TDocumento_mask&)m; TDocumento_mask& dm = (TDocumento_mask&)m;
@ -193,10 +202,16 @@ void TMotore_application::init_insert_mode( TMask& m )
dm.cli2mask(true); dm.cli2mask(true);
} }
if (provv == 'P') if (provv == 'P' && can_make_doc_def())
{
m.enable(DLG_CONFERMA); m.enable(DLG_CONFERMA);
m.show(DLG_CONFERMA);
}
else else
{
m.disable(DLG_CONFERMA); m.disable(DLG_CONFERMA);
m.hide(DLG_CONFERMA);
}
m.disable(DLG_PRINT); m.disable(DLG_PRINT);
m.disable(DLG_PREVIEW); m.disable(DLG_PREVIEW);
m.disable(DLG_EMAIL); m.disable(DLG_EMAIL);
@ -225,23 +240,24 @@ void TMotore_application::init_modify_mode( TMask& m )
const char provv = m.get(F_PROVV)[0]; const char provv = m.get(F_PROVV)[0];
enable_menu_item(MENU_ITEM_ID(1)); enable_menu_item(MENU_ITEM_ID(1));
if (provv == 'P') if (provv == 'P')
{
if (can_make_doc_def())
{ {
m.enable(DLG_CONFERMA); m.enable(DLG_CONFERMA);
m.disable(DLG_PRINT); m.show(DLG_CONFERMA);
}
m.disable(DLG_EMAIL); m.disable(DLG_EMAIL);
m.disable(DLG_PREVIEW);
enable_menu_item(M_FILE_PRINT, false);
enable_menu_item(M_FILE_PREVIEW, false);
} }
else else
{ {
m.disable(DLG_CONFERMA); m.disable(DLG_CONFERMA);
m.enable(DLG_PRINT, enable_print); m.hide(DLG_CONFERMA);
m.enable(DLG_EMAIL, enable_print); m.enable(DLG_EMAIL, enable_print);
}
m.enable(DLG_PRINT, enable_print);
m.enable(DLG_PREVIEW, enable_print); m.enable(DLG_PREVIEW, enable_print);
enable_menu_item(M_FILE_PRINT, enable_print); enable_menu_item(M_FILE_PRINT, enable_print);
enable_menu_item(M_FILE_PREVIEW, enable_print); enable_menu_item(M_FILE_PREVIEW, enable_print);
}
m.enable(DLG_ELABORA); m.enable(DLG_ELABORA);
m.disable(F_STATO); m.disable(F_STATO);

View File

@ -45,6 +45,7 @@ protected:
virtual bool menu(MENU_TAG mt); virtual bool menu(MENU_TAG mt);
virtual TMask* get_mask(int mode); virtual TMask* get_mask(int mode);
virtual bool changing_mask(int mode); virtual bool changing_mask(int mode);
bool can_make_doc_def();
virtual void init_query_mode(TMask& m); virtual void init_query_mode(TMask& m);
virtual void init_insert_mode(TMask& m); virtual void init_insert_mode(TMask& m);
virtual void init_modify_mode(TMask& m); virtual void init_modify_mode(TMask& m);

View File

@ -478,8 +478,9 @@ real TDocumento::imponibile_bolli_esenti() const
bool TDocumento::bolli_esenti_dovuti() const bool TDocumento::bolli_esenti_dovuti() const
{ {
const real impmin_bolli = ini_get_real(CONFIG_STUDIO, "ve", "IMPMINBOLLI"); const real impmin_bolli = ini_get_real(CONFIG_STUDIO, "ve", "IMPMINBOLLI");
const real imponibile_esente = imponibile_bolli_esenti();
return imponibile_bolli_esenti() >= impmin_bolli; return imponibile_esente > ZERO && impmin_bolli > ZERO && imponibile_esente >= impmin_bolli;
} }
real TDocumento::bolli(real & imp, int ndec, TTipo_importo t) const real TDocumento::bolli(real & imp, int ndec, TTipo_importo t) const