Patch level : 12.0 852
Files correlati : cg2, cg2100t.msk, fp0.exe, fp0400a.msk Commento : - Modificati bottoni maschera fatture SDI - Corretto riporta codice fornitore se non e' valorizzato - Aggiunto scollegamento movimento da FPPRO - Corretto controllo righe vuote IVA - Riporta dati numdoc e datadoc anche col collega (per quelli che non hanno f1) - Corretto salvataggio quando si riregistra lo stesso movimento - Aggiunto filtro sul fornitore
This commit is contained in:
parent
2dd21c81a3
commit
860be2a0c4
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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.");
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user