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)
return pro_dataric_err;
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));
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.");
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
@ -2666,11 +2666,6 @@ bool TPrimanota_application::save_dbmov(bool clean) const
mov.put(MOV_KEYFPPRO, !clean ? keyfppro : "");
ok = mov.rewrite() == NOERR;
}
if(clean && ok)
{
app().curr_mask().set(F_PROKEY, "");
app().curr_mask().set(F_COLFPPRO, "");
}
return ok;
}

View File

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

View File

@ -4048,7 +4048,12 @@ bool TPrimanota_application::scollega_handler(TMask_field& f, KEY key)
{
scollega(true);
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.");
}
}

View File

@ -57,6 +57,7 @@ protected:
std::map<TString, TForn_err> _list_fatt_err;
static bool clifo_handler(TMask_field& f, KEY key);
void set_filter_changed();
void select_all(int sheet_field);
@ -100,6 +101,45 @@ public:
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()
{
_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 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") });
}
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_piva = fp_db().sq_get("P_IVA");
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 TString& filter_elab = get_fattsel();
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');
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));
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.
@ -1023,6 +1066,15 @@ bool TPassive_mask::on_field_event(TOperable_field& o, TField_event e, long joll
if (e == fe_init)
o.set(get_periodprec()? "X" : "");
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;
}
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();
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_PERIODPREC 513
#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 F_PROT 401

View File

@ -65,20 +65,147 @@ BEGIN
CHECKTYPE REQUIRED
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
BEGIN
PROMPT 0 10 "@BContabilita'"
PROMPT 0 16 "@BContabilita'"
END
BOOLEAN F_CONTABIL
BEGIN
PROMPT 1 11 "Mostra solo doc. registrati"
PROMPT 1 17 "Mostra solo doc. registrati"
MODULE F1
END
DATE F_DATAINIREG
BEGIN
PROMPT 1 12 "Data iniziale"
PROMPT 1 18 "Data iniziale"
VALIDATE DATE_CMP_FUNC <= F_DATAENDREG
WARNING "La data iniziale non puo' essere superiore della data iniziale"
CHECKTYPE REQUIRED
@ -87,44 +214,21 @@ END
DATE F_DATAENDREG
BEGIN
PROMPT 1 13 "Data finale "
PROMPT 1 19 "Data finale "
VALIDATE DATE_CMP_FUNC >= F_DATAINIREG
WARNING "La data finale non puo' essere minore della data iniziale"
CHECKTYPE REQUIRED
MODULE F1
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
BEGIN
PROMPT 33 10 "@BContabilizzazione automatica:"
PROMPT 33 16 "@BContabilizzazione automatica:"
END
BOOLEAN F_PERIODPREC
BEGIN
PROMPT 34 11 "Selezione automatica liquid. periodo precedente"
PROMPT 34 17 "Selezione automatica liquid. periodo precedente"
MODULE F1
END