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

This commit is contained in:
Sirio Builder 2019-07-04 17:09:51 +02:00
commit 07f58e1f16
6 changed files with 204 additions and 40 deletions

View File

@ -1546,7 +1546,7 @@ int TPrimanota_application::controlli_f1(const TMask& m){
if (data_operazione < dataoraric) if (data_operazione < dataoraric)
return pro_dataric_err; return pro_dataric_err;
const int numreg = fppro_db().set_keys(keys).get_numregcont(); const int numreg = fppro_db().set_keys(keys).get_numregcont();
if (numreg != 0) if (numreg != 0 && numreg != m.get_int(F_NUMREG))
{ {
const TDate data_documento(m.get(F_DATADOC)); const TDate data_documento(m.get(F_DATADOC));
TString msg; msg << "Attenzione il documento " << data_documento.year() << " / " << m.get(F_NUMDOCEXT) << TString msg; msg << "Attenzione il documento " << data_documento.year() << " / " << m.get(F_NUMDOCEXT) <<
@ -2588,7 +2588,7 @@ int TPrimanota_application::save_fppro()
{ {
message_box(TString("Attenzione!") << " E' stato modificato un movimento già collegato a un documento in ingresso."); message_box(TString("Attenzione!") << " E' stato modificato un movimento già collegato a un documento in ingresso.");
clean_fppro(); // Pulisco db clean_fppro(); // Pulisco db
save_dbmov(true); // Svuoto riferimento doc ingresso sul mov save_dbmov(true); // Svuoto riferimento doc ingresso sul mov e proseguo col regolare salvataggio
} }
} }
else return pro_notsaved; // In altre modalita' esco senza fare nulla sul db else return pro_notsaved; // In altre modalita' esco senza fare nulla sul db
@ -2666,11 +2666,6 @@ bool TPrimanota_application::save_dbmov(bool clean) const
mov.put(MOV_KEYFPPRO, !clean ? keyfppro : ""); mov.put(MOV_KEYFPPRO, !clean ? keyfppro : "");
ok = mov.rewrite() == NOERR; ok = mov.rewrite() == NOERR;
} }
if(clean && ok)
{
app().curr_mask().set(F_PROKEY, "");
app().curr_mask().set(F_COLFPPRO, "");
}
return ok; return ok;
} }

View File

@ -58,7 +58,7 @@ END
STRING F_RAGSOCS 50 STRING F_RAGSOCS 50
BEGIN BEGIN
PROMPT 20 1 "" PROMPT 20 1 ""
INPUT TIPOCF F_CLIFO SELECT INPUT TIPOCF "F"
INPUT RAGSOC F_RAGSOCCF INPUT RAGSOC F_RAGSOCCF
FLAGS "D" FLAGS "D"
END END

View File

@ -4048,7 +4048,12 @@ bool TPrimanota_application::scollega_handler(TMask_field& f, KEY key)
{ {
scollega(true); scollega(true);
app().clean_fppro(); app().clean_fppro();
app().save_dbmov(true); const bool ok = app().save_dbmov(true);
if (ok)
{
app().curr_mask().set(F_PROKEY, "");
app().curr_mask().set(F_COLFPPRO, "");
}
message_box("Il movimento e' stato scollegato dalla fattura elettronica\nin ingresso, precedentemente associata."); message_box("Il movimento e' stato scollegato dalla fattura elettronica\nin ingresso, precedentemente associata.");
} }
} }

View File

@ -57,6 +57,7 @@ protected:
std::map<TString, TForn_err> _list_fatt_err; std::map<TString, TForn_err> _list_fatt_err;
static bool clifo_handler(TMask_field& f, KEY key);
void set_filter_changed(); void set_filter_changed();
void select_all(int sheet_field); void select_all(int sheet_field);
@ -100,6 +101,45 @@ public:
TPassive_mask(bool f1); TPassive_mask(bool f1);
}; };
bool TPassive_mask::clifo_handler(TMask_field& f, KEY key)
{
if (key == K_TAB && f.active())
{
TMask& m = f.mask();
const TString4 cf = "F";
const long codice = atol(f.get());
if (codice == 0)
{
m.show(F_STATOPAIV); // Stato partita IVA
m.show(F_PARIVA); // Partita IVA
m.show(F_CODFISC); // Codice Fiscale
return true;
}
TRelation cliforel(LF_CLIFO); cliforel.add(LF_CFVEN, "TIPOCF=TIPOCF|CODCF=CODCF");
TRectype& clifo = cliforel.curr();
clifo.put(CLI_TIPOCF, cf);
clifo.put(CLI_CODCF, codice);
cliforel.read();
const bool occas = clifo.get_bool(CLI_OCCAS);
m.show(F_STATOPAIV, !occas); // Stato partita IVA
if (!occas) {
m.set(F_RAGSOC, clifo.get(CLI_RAGSOC));
m.set(F_STATOPAIV, clifo.get(CLI_STATOPAIV));
m.set(F_PARIVA, clifo.get(CLI_PAIV));
m.set(F_CODFISC, clifo.get(CLI_COFI));
}
m.show(F_PARIVA, !occas); // Partita IVA
m.show(F_CODFISC, !occas); // Codice Fiscale
}
return true;
}
void TPassive_mask::set_filter_changed() void TPassive_mask::set_filter_changed()
{ {
_filter_changed = true; _filter_changed = true;
@ -220,7 +260,7 @@ vector<TPassive_mask::iva>& TPassive_mask::get_righe_iva(TToken_string& keys)
{ {
TString imponibile = fp_db().sq_get("IMPONIBILE"); TString imponibile = fp_db().sq_get("IMPONIBILE");
TString imposta = fp_db().sq_get("IMPOSTA"); TString imposta = fp_db().sq_get("IMPOSTA");
if (imponibile.full() || imposta.full()) if (imponibile != "0" || imposta != "0")
riva.insert(riva.end(), { real(imponibile), real(imposta), real(fp_db().sq_get("ALIQUOTA")), fp_db().sq_get("NATURA") }); riva.insert(riva.end(), { real(imponibile), real(imposta), real(fp_db().sq_get("ALIQUOTA")), fp_db().sq_get("NATURA") });
} }
return riva; return riva;
@ -243,7 +283,6 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee
const TString& paa_codfisc = fp_db().sq_get("COD_FISC"); const TString& paa_codfisc = fp_db().sq_get("COD_FISC");
const TString& paa_piva = fp_db().sq_get("P_IVA"); const TString& paa_piva = fp_db().sq_get("P_IVA");
const TString& paa_codpaese = fp_db().sq_get("COD_PAESE"); const TString& paa_codpaese = fp_db().sq_get("COD_PAESE");
const TString& paa_codsdi = fp_db().sq_get("COD_SDI");
const TDate& dataregcont = fp_db().sq_get_date("DATAREGCONT"); const TDate& dataregcont = fp_db().sq_get_date("DATAREGCONT");
const TString& filter_elab = get_fattsel(); const TString& filter_elab = get_fattsel();
const bool is_contab = dataregcont != TDate("20010101"); const bool is_contab = dataregcont != TDate("20010101");
@ -254,6 +293,10 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee
clifo.put(CLI_TIPOCF, 'F'); clifo.put(CLI_TIPOCF, 'F');
const int forn_code = find_fornitore(clifo); const int forn_code = find_fornitore(clifo);
// Se abilitato il flag di ricerca per fornitore controllo che il codice sia giusto
if (get_bool(F_ENABLEFORN) && (forn_code < 0 || clifo.get_int(CLI_CODCF) != get_int(F_FORNITORE)))
return;
const bool data_range = dataregcont >= TDate(get(F_DATAINIREG)) && dataregcont <= TDate(get(F_DATAENDREG)); const bool data_range = dataregcont >= TDate(get(F_DATAINIREG)) && dataregcont <= TDate(get(F_DATAENDREG));
if( filter_elab.blank() && forn_code != 0 // Filtro sui non associati if( filter_elab.blank() && forn_code != 0 // Filtro sui non associati
|| filter_elab == FILTER_ASS && forn_code == 0 && !is_contab // Filtro sui associati e non contab. || filter_elab == FILTER_ASS && forn_code == 0 && !is_contab // Filtro sui associati e non contab.
@ -1023,6 +1066,15 @@ bool TPassive_mask::on_field_event(TOperable_field& o, TField_event e, long joll
if (e == fe_init) if (e == fe_init)
o.set(get_periodprec()? "X" : ""); o.set(get_periodprec()? "X" : "");
break; break;
case F_ENABLEFORN:
if(e == fe_modify)
{
bool en = o.get() == "X";
field(F_FORNITORE).enable(en);
field(F_RAGSOC).enable(en);
field(F_PARIVA).enable(en);
field(F_CODFISC).enable(en);
}
default: break; default: break;
} }
if (o.dlg() >= F_ASSOC && o.dlg() <= F_CONTABIL) if (o.dlg() >= F_ASSOC && o.dlg() <= F_CONTABIL)
@ -1061,6 +1113,7 @@ TPassive_mask::TPassive_mask(bool f1) : TAutomask("fp0400a"), _f1(f1), _filter_c
{ {
_tmp_dir = _tmp_dir.tempdir(); _tmp_dir = _tmp_dir.tempdir();
TMask::set_handler(F_CAUSFA, causfa_handler); TMask::set_handler(F_CAUSFA, causfa_handler);
TMask::set_handler(F_FORNITORE, clifo_handler);
} }

View File

@ -13,6 +13,13 @@
#define F_GROUPCON2 512 #define F_GROUPCON2 512
#define F_PERIODPREC 513 #define F_PERIODPREC 513
#define F_GROUPCAU 514 #define F_GROUPCAU 514
#define F_ENABLEFORN 515
#define F_FORNITORE 516
#define F_RAGSOC 517
#define F_STATOPAIV 518
#define F_PARIVA 519
#define F_CODFISC 520
#define END_MASK 599 #define END_MASK 599
#define F_PROT 401 #define F_PROT 401

View File

@ -65,20 +65,147 @@ BEGIN
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
RADIOBUTTON F_FATTORD 20 20
BEGIN
PROMPT 56 1 "Ordinamento fatture per "
ITEM "|Data Ricezione"
ITEM "D|Data Documento"
FLAGS ""
END
RADIOBUTTON F_VERSOORD 20 20
BEGIN
PROMPT 56 5 "Ordinamento:"
ITEM "|Decrescente"
ITEM "C|Crescente"
FLAGS ""
END
GROUPBOX DLG_NULL 55 6
BEGIN
PROMPT 0 5 "@BFiltro fornitore"
END
BOOLEAN F_ENABLEFORN
BEGIN
PROMPT 1 6 "Abilita"
END
NUMBER F_FORNITORE 6
BEGIN
PROMPT 17 6 "Codice fornitore "
FIELD CODCF
FLAGS "GRD"
KEY 1
USE LF_CLIFO
INPUT TIPOCF "F" SELECT
INPUT CODCF F_FORNITORE
DISPLAY "Codice@6R" CODCF
DISPLAY "Sospeso@C" SOSPESO
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Codice fiscale@16" COFI
DISPLAY "Partita IVA@11" PAIV
OUTPUT F_FORNITORE CODCF
OUTPUT F_RAGSOC RAGSOC
OUTPUT F_STATOPAIV STATOPAIV
OUTPUT F_PARIVA PAIV
OUTPUT F_CODFISC COFI
ADD RUN cg0 -1 F F_FORNITORE
HELP "Codice relativo al cliente o fornitore"
MESSAGE COPY,2@
END
STRING F_RAGSOC 50
BEGIN
PROMPT 1 7 ""
KEY 2
USE LF_CLIFO KEY 2
INPUT TIPOCF "F"
INPUT RAGSOC F_RAGSOC
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Sospeso@C" SOSPESO
DISPLAY "Codice@R" CODCF
DISPLAY "Codice fiscale@16" COFI
DISPLAY "Partita IVA@11" PAIV
COPY OUTPUT F_FORNITORE
HELP "Prima parte della ragione sociale o cognome"
MESSAGE COPY,3@
WARNING "Manca la ragione sociale"
FLAGS "D"
END
STRING F_STATOPAIV 2
BEGIN
PROMPT 1 8 ""
HELP "Codice ISO dello stato"
FLAGS "U"
USE %SCE
INPUT CODTAB F_STATOPAIV
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATOPAIV CODTAB
CHECKTYPE NORMAL
FLAGS "D"
END
STRING F_PARIVA 50 20
BEGIN
PROMPT 10 8 "P. IVA"
KEY 5
USE LF_CLIFO KEY 5
INPUT TIPOCF "F"
INPUT STATOPAIV F_STATOPAIV
INPUT PAIV F_PARIVA
DISPLAY "ISO@3" STATOPAIV
DISPLAY "Partita IVA@11" PAIV
DISPLAY "Sospeso" SOSPESO
DISPLAY "Codice@R" CODCF
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Codice fiscale@16" COFI
COPY OUTPUT F_FORNITORE
HELP "Partita IVA del cliente/fornitore"
FLAGS "D"
END
STRING F_CODFISC 50 20
BEGIN
PROMPT 1 9 "Cod. Fisc."
FLAGS "U"
KEY 4
USE LF_CLIFO KEY 4
INPUT TIPOCF "F"
INPUT COFI F_CODFISC
DISPLAY "Codice fiscale@16" COFI
DISPLAY "Sospeso" SOSPESO
DISPLAY "Codice@R" CODCF
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Partita IVA@11" PAIV
COPY OUTPUT F_FORNITORE
HELP "Codice fiscale del cliente/fornitore"
FLAGS "D"
END
SPREADSHEET F_PROT 25 4
BEGIN
PROMPT 0 11 "Selezionare o aggiungere un filtro sul Tipo Progressivo"
ITEM "@1"
ITEM "Codice\nProtocol.@12"
END
GROUPBOX F_GROUPCON 32 5 GROUPBOX F_GROUPCON 32 5
BEGIN BEGIN
PROMPT 0 10 "@BContabilita'" PROMPT 0 16 "@BContabilita'"
END END
BOOLEAN F_CONTABIL BOOLEAN F_CONTABIL
BEGIN BEGIN
PROMPT 1 11 "Mostra solo doc. registrati" PROMPT 1 17 "Mostra solo doc. registrati"
MODULE F1 MODULE F1
END END
DATE F_DATAINIREG DATE F_DATAINIREG
BEGIN BEGIN
PROMPT 1 12 "Data iniziale" PROMPT 1 18 "Data iniziale"
VALIDATE DATE_CMP_FUNC <= F_DATAENDREG VALIDATE DATE_CMP_FUNC <= F_DATAENDREG
WARNING "La data iniziale non puo' essere superiore della data iniziale" WARNING "La data iniziale non puo' essere superiore della data iniziale"
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
@ -87,44 +214,21 @@ END
DATE F_DATAENDREG DATE F_DATAENDREG
BEGIN BEGIN
PROMPT 1 13 "Data finale " PROMPT 1 19 "Data finale "
VALIDATE DATE_CMP_FUNC >= F_DATAINIREG VALIDATE DATE_CMP_FUNC >= F_DATAINIREG
WARNING "La data finale non puo' essere minore della data iniziale" WARNING "La data finale non puo' essere minore della data iniziale"
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
MODULE F1 MODULE F1
END END
RADIOBUTTON F_FATTORD 20 20
BEGIN
PROMPT 52 1 "Ordinamento fatture per "
ITEM "|Data Ricezione"
ITEM "D|Data Documento"
FLAGS ""
END
RADIOBUTTON F_VERSOORD 20 20
BEGIN
PROMPT 52 5 "Ordinamento:"
ITEM "|Decrescente"
ITEM "C|Crescente"
FLAGS ""
END
SPREADSHEET F_PROT 25 4
BEGIN
PROMPT 0 5 "Selezionare o aggiungere un filtro sul Tipo Progressivo"
ITEM "@1"
ITEM "Codice\nProtocol.@12"
END
GROUPBOX F_GROUPCON2 59 3 GROUPBOX F_GROUPCON2 59 3
BEGIN BEGIN
PROMPT 33 10 "@BContabilizzazione automatica:" PROMPT 33 16 "@BContabilizzazione automatica:"
END END
BOOLEAN F_PERIODPREC BOOLEAN F_PERIODPREC
BEGIN BEGIN
PROMPT 34 11 "Selezione automatica liquid. periodo precedente" PROMPT 34 17 "Selezione automatica liquid. periodo precedente"
MODULE F1 MODULE F1
END END