Patch level : 12.0 no-patch
Files correlati : fp Commento : - Rifatta interfaccia filtri - Aggiunte nuove funzioni per il filtraggio - Modificato warning in caricamento - Sistemati bug dove non caricava la query - Aggiunto salvataggio/caricamento campi - Aggiunta funzione get_coddest(...) - Sistemato log - Sistemata scrittura descrizione, adesso viene messa direttamente nel paf3000f - Aggiornamento sql per campi data
This commit is contained in:
parent
37301cc4c5
commit
7f3054a080
@ -109,7 +109,7 @@ bool TParametri_mask::on_key(KEY key)
|
|||||||
m.field(101).check_type(CHECK_REQUIRED);
|
m.field(101).check_type(CHECK_REQUIRED);
|
||||||
while(m.run() == K_ENTER)
|
while(m.run() == K_ENTER)
|
||||||
{
|
{
|
||||||
if (m.get(101) == "sirioFATT99") // Hardcode password are the best!
|
if (m.get(101) == "sirioFATT99") // Hardcoded password are the best!
|
||||||
{
|
{
|
||||||
for (int i = F_SETPATCH; i <= F_REBORNDB; i++)
|
for (int i = F_SETPATCH; i <= F_REBORNDB; i++)
|
||||||
enable(i);
|
enable(i);
|
||||||
|
@ -17,7 +17,7 @@ ENDPAGE
|
|||||||
|
|
||||||
PAGE "Configurazione FP" 0 2 0 0
|
PAGE "Configurazione FP" 0 2 0 0
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 8
|
GROUPBOX DLG_NULL 78 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 "@BDatabase"
|
PROMPT 1 1 "@BDatabase"
|
||||||
END
|
END
|
||||||
@ -79,13 +79,13 @@ BEGIN
|
|||||||
MODULE RS
|
MODULE RS
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_FLDDEST 300 50
|
STRING F_FLDDEST 250 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 13 "Destinazione Server "
|
PROMPT 2 13 "Destinazione Server "
|
||||||
FLAGS ""
|
FLAGS ""
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_FLDUSRDEST 300 50
|
STRING F_FLDUSRDEST 250 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 14 "Destinazione User "
|
PROMPT 2 14 "Destinazione User "
|
||||||
DSELECT
|
DSELECT
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
#include "fp0.h"
|
#include "fp0.h"
|
||||||
#include "fp0300a.h"
|
#include "fp0300a.h"
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -30,19 +31,25 @@ protected:
|
|||||||
void set_filter_changed();
|
void set_filter_changed();
|
||||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
void next_page(int p);
|
void next_page(int p);
|
||||||
bool checkNotEmpty();
|
bool check_not_empty();
|
||||||
|
bool check_full_fields() const;
|
||||||
|
bool check_tipo_doc(const TTipo_documento& td);
|
||||||
void fill();
|
void fill();
|
||||||
void init();
|
void init();
|
||||||
bool is_fattura(const TRectype& doc) const;
|
bool is_fattura(const TRectype& doc) const;
|
||||||
|
|
||||||
|
void load_all_fields();
|
||||||
|
|
||||||
bool _filter_changed;
|
bool _filter_changed;
|
||||||
|
unique_ptr<TToken_string> _tipi_doc_scelti;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TPA_mask() : TAutomask("fp0300a"), _filter_changed(true)
|
TPA_mask() : TAutomask("fp0300a"), _filter_changed(true)
|
||||||
{
|
{
|
||||||
disable(DLG_OK);
|
disable(DLG_OK);
|
||||||
|
load_all_fields();
|
||||||
}
|
}
|
||||||
|
void save_all_fields() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool TPA_mask::is_fattura(const TRectype& doc) const
|
bool TPA_mask::is_fattura(const TRectype& doc) const
|
||||||
@ -55,6 +62,40 @@ bool TPA_mask::is_fattura(const TRectype& doc) const
|
|||||||
return cn.tipo() == 2 && !cn.get_bool("B10"); // Controlla se fattura provvisioria esclusa da P.A.
|
return cn.tipo() == 2 && !cn.get_bool("B10"); // Controlla se fattura provvisioria esclusa da P.A.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TPA_mask::save_all_fields() const
|
||||||
|
{
|
||||||
|
ini_set_string(CONFIG_DITTA, "fp", "dataini", get(F_DATAINI));
|
||||||
|
ini_set_string(CONFIG_DITTA, "fp", "dataend", get(F_DATAEND));
|
||||||
|
ini_set_string(CONFIG_DITTA, "fp", "codnum", get(F_CODNUM));
|
||||||
|
|
||||||
|
TToken_string tipidocs = get_tmp_string();
|
||||||
|
FOR_EACH_SHEET_ROW(sfield(F_DOCUMENTI_TIPO), n, r)
|
||||||
|
{
|
||||||
|
tipidocs.add(r->get(0));
|
||||||
|
}
|
||||||
|
ini_set_string(CONFIG_DITTA, "fp", "tipodocs", tipidocs);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TPA_mask::load_all_fields()
|
||||||
|
{
|
||||||
|
set(F_DATAINI, ini_get_string(CONFIG_DITTA, "fp", "dataini"));
|
||||||
|
set(F_DATAEND, ini_get_string(CONFIG_DITTA, "fp", "dataend"));
|
||||||
|
set(F_CODNUM, ini_get_string(CONFIG_DITTA, "fp", "codnum"));
|
||||||
|
TToken_string tipidocs(ini_get_string(CONFIG_DITTA, "fp", "tipodocs"));
|
||||||
|
|
||||||
|
auto& sheet = sfield(F_DOCUMENTI_TIPO);
|
||||||
|
sheet.hide();
|
||||||
|
FOR_EACH_STR_TOKEN(tipidocs, tok)
|
||||||
|
{
|
||||||
|
|
||||||
|
TToken_string& row = sheet.row(-1);
|
||||||
|
row.add(tok);
|
||||||
|
row.add(TTipo_documento(tok).tipo_doc_sdi());
|
||||||
|
}
|
||||||
|
sheet.force_update();
|
||||||
|
sheet.show();
|
||||||
|
}
|
||||||
|
|
||||||
TString& add_filter(const TString& field, const TString& from, const TString& to)
|
TString& add_filter(const TString& field, const TString& from, const TString& to)
|
||||||
{
|
{
|
||||||
TString& query = get_tmp_string();
|
TString& query = get_tmp_string();
|
||||||
@ -78,7 +119,10 @@ TString& add_filter(const TString& field, const TString& from, const TString& to
|
|||||||
|
|
||||||
void TPA_mask::fill()
|
void TPA_mask::fill()
|
||||||
{
|
{
|
||||||
|
save_all_fields();
|
||||||
|
// Pulisco i tipi documento
|
||||||
|
_tipi_doc_scelti.reset();
|
||||||
|
|
||||||
TSheet_field& docs = sfield(F_DOCS);
|
TSheet_field& docs = sfield(F_DOCS);
|
||||||
TString_array& sht = docs.rows_array();
|
TString_array& sht = docs.rows_array();
|
||||||
docs.hide();
|
docs.hide();
|
||||||
@ -87,7 +131,7 @@ void TPA_mask::fill()
|
|||||||
|
|
||||||
const TDate dal = get(F_DATAINI);
|
const TDate dal = get(F_DATAINI);
|
||||||
TString filter_selected = get(F_FATTSEL);
|
TString filter_selected = get(F_FATTSEL);
|
||||||
enable(DLG_OK, filter_selected != "N");
|
enable(DLG_OK, filter_selected != "X");
|
||||||
|
|
||||||
// Record di controllo per eventuali elaborazioni precedenti
|
// Record di controllo per eventuali elaborazioni precedenti
|
||||||
TString hfatt(LEN_HFATT), bfatt(LEN_BFATT);
|
TString hfatt(LEN_HFATT), bfatt(LEN_BFATT);
|
||||||
@ -95,27 +139,26 @@ void TPA_mask::fill()
|
|||||||
|
|
||||||
TString query;
|
TString query;
|
||||||
|
|
||||||
query << "USE 33 " <<
|
query << "USE 33 KEY 3" <<
|
||||||
"SELECT (BETWEEN(33.DATADOC,#DADATADOC,#ADATADOC))&&(33.TIPOCF=='C')";
|
"\nSELECT (33.TIPOCF=='C')&&" <<
|
||||||
|
"(33.CODNUM==#CODNUM)";
|
||||||
|
|
||||||
query << add_filter("33.TIPODOC", get(F_DATIPODOC), get(F_ATIPODOC));
|
query << "\nJOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF \n" <<
|
||||||
|
"JOIN 17 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF \n" <<
|
||||||
query << "\nJOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF \n" <<
|
"JOIN %TIP TO 33 ALIAS 400 INTO CODTAB==TIPODOC\n" <<
|
||||||
"JOIN 17 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF \n" <<
|
"FROM DATADOC=#DADATADOC\n" <<
|
||||||
"JOIN %TIP TO 33 ALIAS 400 INTO CODTAB==TIPODOC";
|
"TO DATADOC=#ADATADOC";
|
||||||
|
|
||||||
TISAM_recordset rec(query);
|
TISAM_recordset rec(query);
|
||||||
if (get(F_DATIPODOC).full())
|
|
||||||
rec.set_var("#DATIPODOC", get(F_DATIPODOC));
|
rec.set_var("#CODNUM", get(F_CODNUM));
|
||||||
if (get(F_ATIPODOC).full())
|
|
||||||
rec.set_var("#ATIPODOC", get(F_ATIPODOC));
|
|
||||||
|
|
||||||
rec.set_var("#DADATADOC", get_date(F_DATAINI));
|
rec.set_var("#DADATADOC", get_date(F_DATAINI));
|
||||||
rec.set_var("#ADATADOC", get_date(F_DATAEND));
|
rec.set_var("#ADATADOC", get_date(F_DATAEND));
|
||||||
|
|
||||||
TProgress_monitor pi(rec.items(), NULL);
|
TProgress_monitor pi(rec.items(), nullptr);
|
||||||
|
|
||||||
bool first, show, ask = !((show = (first = true)));
|
bool first, show, ask = !((show = (first = true)));
|
||||||
|
int fat_no_cod = 0;
|
||||||
|
|
||||||
// Disabilito la colonna del codice ufficio
|
// Disabilito la colonna del codice ufficio
|
||||||
docs.enable_column(docs.cid2index(S_UFFICIO), false);
|
docs.enable_column(docs.cid2index(S_UFFICIO), false);
|
||||||
@ -128,13 +171,13 @@ void TPA_mask::fill()
|
|||||||
const TTipo_documento& td = cached_tipodoc(doc.get(DOC_TIPODOC));
|
const TTipo_documento& td = cached_tipodoc(doc.get(DOC_TIPODOC));
|
||||||
|
|
||||||
// Controllo che il tipo documento sia OK
|
// Controllo che il tipo documento sia OK
|
||||||
if (td.tipo_doc_sdi().empty() || td.reg_fisc().empty())
|
if(!check_tipo_doc(td))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
bool sent = false;
|
bool sent = false;
|
||||||
if (chiave_paf(doc, hfatt, bfatt))
|
if (chiave_paf(doc, hfatt, bfatt))
|
||||||
{
|
{
|
||||||
if (paf0100f.search(NULL, hfatt, bfatt))
|
if (paf0100f.search(nullptr, hfatt, bfatt))
|
||||||
{
|
{
|
||||||
if (paf0100f.sq_get("P1_GESTIONE") != filter_selected)
|
if (paf0100f.sq_get("P1_GESTIONE") != filter_selected)
|
||||||
continue;
|
continue;
|
||||||
@ -169,29 +212,13 @@ void TPA_mask::fill()
|
|||||||
// Segno la riga errata
|
// Segno la riga errata
|
||||||
if (first)
|
if (first)
|
||||||
{
|
{
|
||||||
// Abilito la colonna del codice ufficio per segnalare l'errore
|
first = false;
|
||||||
docs.enable_column(docs.cid2index(S_UFFICIO));
|
// Abilito la colonna del codice ufficio per segnalare l'errore
|
||||||
|
docs.enable_column(docs.cid2index(S_UFFICIO));
|
||||||
}
|
}
|
||||||
docs.set_back_and_fore_color(COLOR_RED, COLOR_WHITE, rec.current_row(), docs.cid2index(S_UFFICIO));
|
docs.set_back_and_fore_color(COLOR_RED, COLOR_WHITE, rec.current_row(), docs.cid2index(S_UFFICIO));
|
||||||
|
|
||||||
if (show)
|
fat_no_cod++;
|
||||||
{
|
|
||||||
TString msg; msg << "Trovata fattura " << rec.get(DOC_CODNUM).as_string() << "/" << rec.get(DOC_TIPODOC).as_string() << "/" << rec.get(DOC_NDOC).as_int() << " senza nessun codice destinatario/pec, Continuare?";
|
|
||||||
const bool force_stop = !yesno_box(msg);
|
|
||||||
if (!first && !ask && !force_stop)
|
|
||||||
{
|
|
||||||
show = yesno_box("Continuare a mostrare questo messaggio?");
|
|
||||||
ask = true;
|
|
||||||
}
|
|
||||||
if (force_stop)
|
|
||||||
{
|
|
||||||
row.cut(0);
|
|
||||||
docs.force_update();
|
|
||||||
docs.show();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
first = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(rif.full())
|
if(rif.full())
|
||||||
@ -220,6 +247,9 @@ void TPA_mask::fill()
|
|||||||
|
|
||||||
docs.force_update();
|
docs.force_update();
|
||||||
docs.show();
|
docs.show();
|
||||||
|
|
||||||
|
if (fat_no_cod > 0)
|
||||||
|
warning_box("Sono state trovate una o più fatture senza codice destinatario nè pec");
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPA_mask::set_filter_changed()
|
void TPA_mask::set_filter_changed()
|
||||||
@ -283,7 +313,7 @@ bool TPA_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
break;
|
break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
if (e == fe_modify && jolly == 0)
|
if((e == fe_modify || e >= se_enter) && jolly == 0)
|
||||||
{
|
{
|
||||||
if (o.dlg() >= START_MASK && o.dlg() <= END_MASK)
|
if (o.dlg() >= START_MASK && o.dlg() <= END_MASK)
|
||||||
{
|
{
|
||||||
@ -295,20 +325,22 @@ bool TPA_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
|
|
||||||
void TPA_mask::next_page(int p)
|
void TPA_mask::next_page(int p)
|
||||||
{
|
{
|
||||||
TAutomask::next_page(p);
|
bool ok = true;
|
||||||
if (_filter_changed)
|
if (_filter_changed && p != 1000)
|
||||||
{
|
{
|
||||||
TSheet_field& sf = sfield(F_DOCS);
|
if ((ok = _filter_changed = check_full_fields()))
|
||||||
if (curr_win() == sf.parent())
|
|
||||||
{
|
{
|
||||||
|
TSheet_field& sf = sfield(F_DOCS);
|
||||||
fill();
|
fill();
|
||||||
sf.force_update();
|
sf.force_update();
|
||||||
_filter_changed = false;
|
_filter_changed = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(ok)
|
||||||
|
TAutomask::next_page(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TPA_mask::checkNotEmpty()
|
bool TPA_mask::check_not_empty()
|
||||||
{
|
{
|
||||||
TSheet_field& sheet = sfield(F_DOCS);
|
TSheet_field& sheet = sfield(F_DOCS);
|
||||||
TString msg;
|
TString msg;
|
||||||
@ -325,6 +357,33 @@ bool TPA_mask::checkNotEmpty()
|
|||||||
return sheet.full();
|
return sheet.full();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TPA_mask::check_full_fields() const
|
||||||
|
{
|
||||||
|
// Controllo ogni campo che sia valorizzato
|
||||||
|
FOR_EACH_MASK_FIELD(*this, i, f)
|
||||||
|
{
|
||||||
|
if (!f->on_key(K_ENTER))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TPA_mask::check_tipo_doc(const TTipo_documento& td)
|
||||||
|
{
|
||||||
|
// Mi precarico la tabella dei documenti scelti
|
||||||
|
|
||||||
|
if(_tipi_doc_scelti == nullptr)
|
||||||
|
{
|
||||||
|
_tipi_doc_scelti.reset(new TToken_string());
|
||||||
|
FOR_EACH_SHEET_ROW(sfield(F_DOCUMENTI_TIPO), n, r)
|
||||||
|
{
|
||||||
|
_tipi_doc_scelti->add(r->get(0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Controllo innanzitutto che sia tra quelli scelti
|
||||||
|
return _tipi_doc_scelti->find(td.codice()) >= 0 && td.tipo_doc_sdi().full() && td.reg_fisc().full();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
// TDoc2Paf
|
// TDoc2Paf
|
||||||
@ -373,6 +432,7 @@ void TDoc2Paf::main_loop()
|
|||||||
{
|
{
|
||||||
if (elab.commit() > 0)
|
if (elab.commit() > 0)
|
||||||
{
|
{
|
||||||
|
mask.save_all_fields();
|
||||||
message_box(FR("Sono stati elaborati %d documenti"), ndocs);
|
message_box(FR("Sono stati elaborati %d documenti"), ndocs);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1,12 +1,15 @@
|
|||||||
#define START_MASK 301
|
#define START_MASK 301
|
||||||
#define F_DATAINI 301
|
#define F_DATAINI 401
|
||||||
#define F_DATAEND 302
|
#define F_DATAEND 402
|
||||||
#define F_FATTSEL 303
|
#define F_FATTSEL 403
|
||||||
#define F_DACODNUM 304
|
#define F_CODNUM 404
|
||||||
#define F_DATIPODOC 305
|
#define END_MASK 499
|
||||||
#define F_ACODNUM 306
|
|
||||||
#define F_ATIPODOC 307
|
|
||||||
#define END_MASK 399
|
#define F_DOCUMENTI_TIPO 301
|
||||||
|
|
||||||
|
#define S_TIPODOCSEL 101
|
||||||
|
#define S_TIPODOCSDI 102
|
||||||
|
|
||||||
#define F_DOCS 201
|
#define F_DOCS 201
|
||||||
|
|
||||||
|
@ -5,103 +5,50 @@ TOOLBAR "topbar" 0 0 0 2
|
|||||||
#include <allbar.h>
|
#include <allbar.h>
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Fatture Pubblica Amministrazione" 0 2 0 0
|
PAGE "Fatturazione Elettronica" 0 2 0 0
|
||||||
|
|
||||||
DATE F_DATAINI
|
DATE F_DATAINI
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 0 "Data iniziale"
|
PROMPT 1 1 "Data iniziale"
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE F_DATAEND
|
DATE F_DATAEND
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 30 0 "Data finale"
|
PROMPT 40 1 "Data finale "
|
||||||
VALIDATE DATE_CMP_FUNC >= F_DATAINI
|
VALIDATE DATE_CMP_FUNC >= F_DATAINI
|
||||||
WARNING "La data finale non può essere minore della data iniziale"
|
WARNING "La data finale non può essere minore della data iniziale"
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
RADIOBUTTON F_FATTSEL 100
|
RADIOBUTTON F_FATTSEL 3 35
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 "Fatture da visualizzare"
|
PROMPT 1 2 "Fatture da visualizzare"
|
||||||
ITEM "|Da inviare"
|
ITEM "|Da inviare"
|
||||||
ITEM "D|Diagnosticate"
|
|
||||||
ITEM "P|Pronte"
|
|
||||||
ITEM "X|XML Generato"
|
ITEM "X|XML Generato"
|
||||||
ITEM "E|In errore"
|
ITEM "E|In errore"
|
||||||
ITEM "N|Accettate"
|
|
||||||
FLAGS "Z"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_DACODNUM 4
|
STRING F_CODNUM 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 4 "Da Numerazione"
|
PROMPT 40 2 "Numerazione "
|
||||||
FIELD CODNUM
|
|
||||||
HELP "Codice numerazione"
|
HELP "Codice numerazione"
|
||||||
USE %NUM
|
USE %NUM
|
||||||
INPUT CODTAB F_DACODNUM
|
INPUT CODTAB F_CODNUM
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_DACODNUM CODTAB
|
OUTPUT F_CODNUM CODTAB
|
||||||
CHECKTYPE FORCED
|
CHECKTYPE REQUIRED
|
||||||
FLAG "UPA"
|
FLAG "UPA"
|
||||||
WARNING "Numerazione assente"
|
WARNING "Numerazione assente"
|
||||||
KEY 1 2
|
KEY 1 2
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_DATIPODOC 4
|
SPREADSHEET F_DOCUMENTI_TIPO 25 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 30 4 "Da tipo doc "
|
PROMPT 40 3 ""
|
||||||
FIELD TIPODOC
|
ITEM "Tipo Doc"
|
||||||
HELP "Codice tipo documento"
|
ITEM "Tipo SDI"
|
||||||
USE %TIP
|
|
||||||
SELECT S3[37,40]!=""
|
|
||||||
INPUT CODTAB F_DATIPODOC
|
|
||||||
DISPLAY "Codice" CODTAB
|
|
||||||
DISPLAY "Descrizione@50" S0
|
|
||||||
DISPLAY "Tipo SDI@10" S12
|
|
||||||
OUTPUT F_DATIPODOC CODTAB
|
|
||||||
CHECKTYPE FORCED
|
|
||||||
FLAG "UP"
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING F_ACODNUM 4
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 5 "A Numerazione "
|
|
||||||
FIELD CODNUM
|
|
||||||
HELP "Codice numerazione"
|
|
||||||
USE %NUM
|
|
||||||
INPUT CODTAB F_ACODNUM
|
|
||||||
DISPLAY "Codice" CODTAB
|
|
||||||
DISPLAY "Descrizione@50" S0
|
|
||||||
OUTPUT F_ACODNUM CODTAB
|
|
||||||
CHECKTYPE FORCED
|
|
||||||
FLAG "UPA"
|
|
||||||
WARNING "Numerazione assente"
|
|
||||||
KEY 1 2
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING F_ATIPODOC 4
|
|
||||||
BEGIN
|
|
||||||
PROMPT 30 5 "A tipo doc "
|
|
||||||
FIELD TIPODOC
|
|
||||||
HELP "Codice tipo documento"
|
|
||||||
USE %TIP
|
|
||||||
SELECT S3[37,40]!=""
|
|
||||||
INPUT CODTAB F_ATIPODOC
|
|
||||||
DISPLAY "Codice" CODTAB
|
|
||||||
DISPLAY "Descrizione@50" S0
|
|
||||||
DISPLAY "Tipo SDI@10" S12
|
|
||||||
OUTPUT F_ATIPODOC CODTAB
|
|
||||||
CHECKTYPE FORCED
|
|
||||||
FLAG "UP"
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING DLG_PROFILE 256
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 -1 "Profilo "
|
|
||||||
PSELECT
|
|
||||||
FLAGS "H"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
@ -129,9 +76,55 @@ BEGIN
|
|||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
|
PAGE "Riga tipo doc" -1 -1 25 3
|
||||||
|
|
||||||
|
STRING S_TIPODOCSEL 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Tipo doc "
|
||||||
|
HELP "Codice tipo documento"
|
||||||
|
USE %TIP
|
||||||
|
SELECT S3[37,40]!=""
|
||||||
|
INPUT CODTAB S_TIPODOCSEL
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "Tipo SDI@10" S12
|
||||||
|
OUTPUT S_TIPODOCSEL CODTAB
|
||||||
|
OUTPUT S_TIPODOCSDI S12
|
||||||
|
CHECKTYPE FORCED
|
||||||
|
FLAG "UPA"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING S_TIPODOCSDI 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 2 "Tipo Doc SDI"
|
||||||
|
FLAG "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
TOOLBAR "Tipo Documento" 0 0 0 2
|
||||||
|
|
||||||
|
BUTTON DLG_OK 2 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_DELREC 2 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_CANCEL 2 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
ENDMASK
|
||||||
|
|
||||||
|
|
||||||
PAGE "Documento" -1 -1 78 9
|
PAGE "Documento" -1 -1 78 9
|
||||||
|
|
||||||
BOOLEAN S_SELECTED
|
BOOLEAN S_SELECTED
|
||||||
@ -245,7 +238,5 @@ BEGIN
|
|||||||
PROMPT 1 1 ""
|
PROMPT 1 1 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
ENDMASK
|
||||||
ENDMASK
|
|
@ -86,7 +86,7 @@ bool check_tables()
|
|||||||
if (r[0] == '-' && r[1] == '-')
|
if (r[0] == '-' && r[1] == '-')
|
||||||
continue;
|
continue;
|
||||||
s += r;
|
s += r;
|
||||||
// Cerco un ;
|
// Cerco un ;
|
||||||
const int limiter = s.find(';') + 1;
|
const int limiter = s.find(';') + 1;
|
||||||
if(limiter > 0)
|
if(limiter > 0)
|
||||||
{
|
{
|
||||||
@ -150,6 +150,31 @@ bool chiave_paf(const TRectype& doc, TString& hfatt, TString& bfatt)
|
|||||||
return hfatt.full();
|
return hfatt.full();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool get_coddest(const char tipocf, const long codcf, TString& coddest, TString& pec)
|
||||||
|
{
|
||||||
|
TCli_for clifo(tipocf, codcf);
|
||||||
|
coddest = clifo.vendite().get("PADESTIN");
|
||||||
|
pec = clifo.get("PEC");
|
||||||
|
bool enapec = false;
|
||||||
|
if (coddest.empty())
|
||||||
|
{
|
||||||
|
// Controllo se ha la pec
|
||||||
|
if (pec.full())
|
||||||
|
{
|
||||||
|
coddest = "0000000";
|
||||||
|
enapec = true;
|
||||||
|
}
|
||||||
|
// Controllo se è straniero
|
||||||
|
else if (TAnagrafica(LF_CLIFO, tipocf, codcf).estero())
|
||||||
|
{
|
||||||
|
coddest = "XXXXXXX";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* TPaf_record
|
* TPaf_record
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
@ -291,7 +316,7 @@ TString& TPaf_record::remove_string()
|
|||||||
query << fld << '=' << var2str(fld, var);
|
query << fld << '=' << var2str(fld, var);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CHECKS(nkf >= 2, "Can't remove partial key on table ", (const char*)_table);
|
CHECKS(nkf >= 2, "Can't remove partial key on table ", static_cast<const char*>(_table));
|
||||||
query << ';';
|
query << ';';
|
||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
@ -619,29 +644,32 @@ const TRectype& TDoc_fp::cco(const TRectype& doc) const
|
|||||||
{
|
{
|
||||||
char tcon = doc.get_char(DOC_MODPAG);
|
char tcon = doc.get_char(DOC_MODPAG);
|
||||||
if (tcon < 'C') tcon = 'C';
|
if (tcon < 'C') tcon = 'C';
|
||||||
conkey.format("%c%6ld%s", tcon, doc.get_long(DOC_CODCF), (const char*)con);
|
conkey.format("%c%6ld%s", tcon, doc.get_long(DOC_CODCF), static_cast<const char*>(con));
|
||||||
}
|
}
|
||||||
return cache().get("&CON", conkey);
|
return cache().get("&CON", conkey);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TDoc_fp::log(int severity, const char* msg)
|
void TDoc_fp::log(int severity, const char* msg)
|
||||||
{
|
{
|
||||||
if (severity < 0)
|
if (_log == nullptr)
|
||||||
|
{
|
||||||
|
_log = new TLog_report;
|
||||||
|
}
|
||||||
|
if (severity < 0)
|
||||||
|
{
|
||||||
|
_logpaf = msg;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (_logpaf.full())
|
||||||
{
|
{
|
||||||
_logpaf = msg;
|
TString txt;
|
||||||
}
|
txt << _logpaf << ": " << msg;
|
||||||
else if (_log == NULL)
|
_log->log(severity, txt);
|
||||||
{
|
|
||||||
_log = new TLog_report;
|
|
||||||
if (_logpaf.full())
|
|
||||||
{
|
|
||||||
TString txt;
|
|
||||||
txt << _logpaf << ": " << msg;
|
|
||||||
_log->log(severity, txt);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
_log->log(severity, msg);
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
_log->log(severity, msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TDoc_fp::show_log()
|
bool TDoc_fp::show_log()
|
||||||
@ -730,7 +758,6 @@ bool TDoc_fp::add_row_alleg(TFilename& file, long& nprogr, TPaf_record& paf)
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||||
{
|
{
|
||||||
TString8 hfatt; // Codice univoco di 6 caratteri dell'ufficio P.A. o di 7 caratteri per un privato
|
TString8 hfatt; // Codice univoco di 6 caratteri dell'ufficio P.A. o di 7 caratteri per un privato
|
||||||
@ -740,23 +767,11 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
|
|
||||||
TString8 coddest = doc.clifor().vendite().get("PADESTIN");
|
TString8 coddest = doc.clifor().vendite().get("PADESTIN");
|
||||||
TString pec = doc.clifor().get("PEC");
|
TString pec = doc.clifor().get("PEC");
|
||||||
bool enapec = false;
|
|
||||||
if (coddest.empty())
|
if (!get_coddest(doc.clifor().tipo(), doc.clifor().codice(), coddest, pec))
|
||||||
{
|
return false;
|
||||||
// Controllo se ha la pec
|
|
||||||
if (pec.full())
|
const bool enapec = coddest == "0000000" && pec.full();
|
||||||
{
|
|
||||||
coddest = "0000000";
|
|
||||||
enapec = true;
|
|
||||||
}
|
|
||||||
// Controllo se è straniero
|
|
||||||
else if (clifo.estero())
|
|
||||||
{
|
|
||||||
coddest = "XXXXXXX";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
const bool privato = coddest.len() != 6;
|
const bool privato = coddest.len() != 6;
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
@ -1115,7 +1130,13 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
paf1800f.set("PI_KEYHEADERFATT", hfatt);
|
paf1800f.set("PI_KEYHEADERFATT", hfatt);
|
||||||
paf1800f.set("PI_KEYBODYFATT", bfatt);
|
paf1800f.set("PI_KEYBODYFATT", bfatt);
|
||||||
paf1800f.set("PI_NUMEROLINEA", ++riga);
|
paf1800f.set("PI_NUMEROLINEA", ++riga);
|
||||||
paf1800f.set("PI_DESCRIZIONE", descrizione(*rdoc));
|
|
||||||
|
TPaf_record paf3000f("PAF3000F");
|
||||||
|
paf3000f.set("PT_KEYHEADERFATT", hfatt);
|
||||||
|
paf3000f.set("PT_KEYBODYFATT", bfatt);
|
||||||
|
paf3000f.set("PT_RIFNUMLINEA", riga);
|
||||||
|
paf3000f.set("PT_COMMENTO", descrizione(*rdoc));
|
||||||
|
|
||||||
// paf1800f.set("PI_ALIQUOTAIVA", "22.00"); // Altrimenti scarta le righe di descrizione
|
// paf1800f.set("PI_ALIQUOTAIVA", "22.00"); // Altrimenti scarta le righe di descrizione
|
||||||
|
|
||||||
// <CodiceArticolo>
|
// <CodiceArticolo>
|
||||||
@ -1142,7 +1163,6 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
}
|
}
|
||||||
// </CodiceArticolo>
|
// </CodiceArticolo>
|
||||||
|
|
||||||
|
|
||||||
set_IVA(codivadefault, paf1800f);
|
set_IVA(codivadefault, paf1800f);
|
||||||
|
|
||||||
if (rdoc->is_merce())
|
if (rdoc->is_merce())
|
||||||
@ -1185,7 +1205,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
const real perc = str;
|
const real perc = str;
|
||||||
if (!perc.is_zero())
|
if (!perc.is_zero())
|
||||||
{
|
{
|
||||||
paf2000f.set("PJ_KEYNLINEA", (long)r);
|
paf2000f.set("PJ_KEYNLINEA", static_cast<long>(r));
|
||||||
paf2000f.set("PJ_KEYNLINAR", ++nlin_sconto);
|
paf2000f.set("PJ_KEYNLINAR", ++nlin_sconto);
|
||||||
if (perc > ZERO)
|
if (perc > ZERO)
|
||||||
{
|
{
|
||||||
@ -1261,7 +1281,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
if (qta.is_zero())
|
if (qta.is_zero())
|
||||||
{
|
{
|
||||||
TString msg;
|
TString msg;
|
||||||
msg.format("La riga spese a quantità %d ha quantità nulla (campo %s)", riga, (const char*)rdoc->field_qta());
|
msg.format("La riga spese a quantità %d ha quantità nulla (campo %s)", riga, static_cast<const char*>(rdoc->field_qta()));
|
||||||
log(1, msg);
|
log(1, msg);
|
||||||
qta = UNO;
|
qta = UNO;
|
||||||
}
|
}
|
||||||
@ -1304,7 +1324,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
paf1800f.set("PI_GESTIONE", "D");
|
paf1800f.set("PI_GESTIONE", "D");
|
||||||
ok &= insert(paf1800f);
|
ok &= insert(paf1800f) && insert(paf3000f);
|
||||||
}
|
}
|
||||||
// </DatiBeniServizi>
|
// </DatiBeniServizi>
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ bool check_tables();
|
|||||||
// Genera la chiave per i paf
|
// Genera la chiave per i paf
|
||||||
bool chiave_paf(const TDocumento& doc, TString& hfatt, TString& bfatt);
|
bool chiave_paf(const TDocumento& doc, TString& hfatt, TString& bfatt);
|
||||||
bool chiave_paf(const TRectype& doc, TString& hfatt, TString& bfatt);
|
bool chiave_paf(const TRectype& doc, TString& hfatt, TString& bfatt);
|
||||||
|
bool get_coddest(const char tipocf, const long codcf, TString& coddest, TString& pec);
|
||||||
|
|
||||||
// Contenitore di campi di un record di database MSSQLServer
|
// Contenitore di campi di un record di database MSSQLServer
|
||||||
class TPaf_record : public TObject
|
class TPaf_record : public TObject
|
||||||
@ -109,7 +109,8 @@ static bool get_bnp_iban(const TString& abi, const TString&
|
|||||||
static void set_IVA(const TRiga_documento& rdoc, TPaf_record& paf);
|
static void set_IVA(const TRiga_documento& rdoc, TPaf_record& paf);
|
||||||
bool add_row_art(const TString codice_tipo, const TString& codice_valore, TPaf_record& paf);
|
bool add_row_art(const TString codice_tipo, const TString& codice_valore, TPaf_record& paf);
|
||||||
bool add_row_alleg(TFilename& file, long& nprogr, TPaf_record& paf);
|
bool add_row_alleg(TFilename& file, long& nprogr, TPaf_record& paf);
|
||||||
|
void set_descrizione(const TRiga_documento* doc);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool doc_to_paf(TDocumentoEsteso& doc);
|
bool doc_to_paf(TDocumentoEsteso& doc);
|
||||||
bool doc_to_paf(const TRectype& rec);
|
bool doc_to_paf(const TRectype& rec);
|
||||||
|
86
src/fp/sql/fp0104.sql
Normal file
86
src/fp/sql/fp0104.sql
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
-- Aggiornamento campi date Campo, sta roba va fatta perchè abbiamo già dei clienti in produzione!
|
||||||
|
|
||||||
|
-- FPERR00K
|
||||||
|
ALTER TABLE FPERR00K DROP CONSTRAINT FPERR00Q;
|
||||||
|
ALTER TABLE FPERR00K ALTER COLUMN PXUHRI DATETIME;
|
||||||
|
ALTER TABLE FPERR00K ADD CONSTRAINT FPERR00K_TLLNNAPRV1 DEFAULT '19700101 00:00:00' FOR PXUHRI;
|
||||||
|
UPDATE FPERR00K SET PXUHRI = '19700101 00:00:00' WHERE PXUHRI IS NULL;
|
||||||
|
ALTER TABLE FPERR00K ALTER COLUMN PXUHRI DATETIME NOT NULL;
|
||||||
|
ALTER TABLE FPERR00K ADD CONSTRAINT FPERR00Q PRIMARY KEY(PXPRGI, PXHFAT, PXBFAT, PXUHRI, PXNFIL, PXNLIN, PXNERR);
|
||||||
|
|
||||||
|
-- FPPRO00F
|
||||||
|
ALTER TABLE FPPRO00F ALTER COLUMN PZ_DATAPROT DATETIME;
|
||||||
|
ALTER TABLE FPPRO00F ADD CONSTRAINT FPPRO00F_TLLNNAPRV1 DEFAULT '19700101 00:00:00' FOR PZ_DATAPROT;
|
||||||
|
UPDATE FPPRO00F SET PZ_DATAPROT = '19700101 00:00:00' WHERE PZ_DATAPROT IS NULL;
|
||||||
|
ALTER TABLE FPPRO00F ALTER COLUMN PZ_DATAPROT DATETIME NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE FPPRO00F ALTER COLUMN PZ_DATAACCET DATETIME;
|
||||||
|
ALTER TABLE FPPRO00F ADD CONSTRAINT FPPRO00F_TLLNNAPRV2 DEFAULT '19700101 00:00:00' FOR PZ_DATAACCET;
|
||||||
|
UPDATE FPPRO00F SET PZ_DATAACCET = '19700101 00:00:00' WHERE PZ_DATAACCET IS NULL;
|
||||||
|
ALTER TABLE FPPRO00F ALTER COLUMN PZ_DATAACCET DATETIME NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE FPPRO00F ALTER COLUMN PZ_DATACONT DATETIME;
|
||||||
|
ALTER TABLE FPPRO00F ADD CONSTRAINT FPPRO00F_TLLNNAPRV3 DEFAULT '19700101 00:00:00' FOR PZ_DATACONT;
|
||||||
|
UPDATE FPPRO00F SET PZ_DATACONT = '19700101 00:00:00' WHERE PZ_DATACONT IS NULL;
|
||||||
|
ALTER TABLE FPPRO00F ALTER COLUMN PZ_DATACONT DATETIME NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE FPPRO00F ALTER COLUMN PZ_DATAARCH DATETIME;
|
||||||
|
ALTER TABLE FPPRO00F ADD CONSTRAINT FPPRO00F_TLLNNAPRV4 DEFAULT '19700101 00:00:00' FOR PZ_DATAARCH;
|
||||||
|
UPDATE FPPRO00F SET PZ_DATAARCH = '19700101 00:00:00' WHERE PZ_DATAARCH IS NULL;
|
||||||
|
ALTER TABLE FPPRO00F ALTER COLUMN PZ_DATAARCH DATETIME NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE FPPRO00F ALTER COLUMN PZ_DATAORARIC DATETIME;
|
||||||
|
ALTER TABLE FPPRO00F ADD CONSTRAINT FPPRO00F_TLLNNAPRV5 DEFAULT '19700101 00:00:00' FOR PZ_DATAORARIC;
|
||||||
|
UPDATE FPPRO00F SET PZ_DATAORARIC = '19700101 00:00:00' WHERE PZ_DATAORARIC IS NULL;
|
||||||
|
ALTER TABLE FPPRO00F ALTER COLUMN PZ_DATAORARIC DATETIME NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE FPPRO00F ALTER COLUMN PZ_DATASTATO DATETIME;
|
||||||
|
ALTER TABLE FPPRO00F ADD CONSTRAINT FPPRO00F_TLLNNAPRV6 DEFAULT '19700101 00:00:00' FOR PZ_DATASTATO;
|
||||||
|
UPDATE FPPRO00F SET PZ_DATASTATO = '19700101 00:00:00' WHERE PZ_DATASTATO IS NULL;
|
||||||
|
ALTER TABLE FPPRO00F ALTER COLUMN PZ_DATASTATO DATETIME NOT NULL;
|
||||||
|
|
||||||
|
-- PAA0100F
|
||||||
|
ALTER TABLE PAA0100F DROP CONSTRAINT PAA0100Q;
|
||||||
|
DROP INDEX PAA0101I ON PAA0100F;
|
||||||
|
ALTER TABLE PAA0100F ALTER COLUMN P1_DATAORARIC DATETIME;
|
||||||
|
ALTER TABLE PAA0100F ADD CONSTRAINT PAA0100F_TLLNNAPRV1 DEFAULT '19700101 00:00:00' FOR P1_DATAORARIC;
|
||||||
|
UPDATE PAA0100F SET P1_DATAORARIC = '19700101 00:00:00' WHERE P1_DATAORARIC IS NULL;
|
||||||
|
ALTER TABLE PAA0100F ALTER COLUMN P1_DATAORARIC DATETIME NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE PAA0100F ALTER COLUMN P1_DATASTATO DATETIME;
|
||||||
|
ALTER TABLE PAA0100F ADD CONSTRAINT PAA0100F_TLLNNAPRV2 DEFAULT '19700101 00:00:00' FOR P1_DATASTATO;
|
||||||
|
UPDATE PAA0100F SET P1_DATASTATO = '19700101 00:00:00' WHERE P1_DATASTATO IS NULL;
|
||||||
|
ALTER TABLE PAA0100F ALTER COLUMN P1_DATASTATO DATETIME NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE PAA0100F ADD CONSTRAINT PAA0100Q PRIMARY KEY(P1_KEYPRGINVIO, P1_KEYHEADERFATT, P1_KEYBODYFATT, P1_DATAORARIC);
|
||||||
|
CREATE INDEX PAA0101I ON PAA0100F (P1_KEYPRGINVIO ASC, P1_KEYHEADERFATT ASC, P1_KEYBODYFATT ASC, P1_DATAORARIC ASC);
|
||||||
|
|
||||||
|
-- PAA2800F
|
||||||
|
ALTER TABLE PAA2800F ALTER COLUMN PR_DATAORARIT DATETIME;
|
||||||
|
ALTER TABLE PAA2800F ADD CONSTRAINT PAA2800F_TLLNNAPRV1 DEFAULT '19700101 00:00:00' FOR PR_DATAORARIT;
|
||||||
|
UPDATE PAA2800F SET PR_DATAORARIT = '19700101 00:00:00' WHERE PR_DATAORARIT IS NULL;
|
||||||
|
ALTER TABLE PAA2800F ALTER COLUMN PR_DATAORARIT DATETIME NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE PAA2800F ALTER COLUMN PR_DATAORACON DATETIME;
|
||||||
|
ALTER TABLE PAA2800F ADD CONSTRAINT PAA2800F_TLLNNAPRV2 DEFAULT '19700101 00:00:00' FOR PR_DATAORACON;
|
||||||
|
UPDATE PAA2800F SET PR_DATAORACON = '19700101 00:00:00' WHERE PR_DATAORACON IS NULL;
|
||||||
|
ALTER TABLE PAA2800F ALTER COLUMN PR_DATAORACON DATETIME NOT NULL;
|
||||||
|
|
||||||
|
-- PAF2800F
|
||||||
|
ALTER TABLE PAF2800F ALTER COLUMN PR_DATAORARIT DATETIME;
|
||||||
|
ALTER TABLE PAF2800F ADD CONSTRAINT PAF2800F_TLLNNAPRV1 DEFAULT '19700101 00:00:00' FOR PR_DATAORARIT;
|
||||||
|
UPDATE PAF2800F SET PR_DATAORARIT = '19700101 00:00:00' WHERE PR_DATAORARIT IS NULL;
|
||||||
|
ALTER TABLE PAF2800F ALTER COLUMN PR_DATAORARIT DATETIME NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE PAF2800F ALTER COLUMN PR_DATAORACON DATETIME;
|
||||||
|
ALTER TABLE PAF2800F ADD CONSTRAINT PAF2800F_TLLNNAPRV2 DEFAULT '19700101 00:00:00' FOR PR_DATAORACON;
|
||||||
|
UPDATE PAF2800F SET PR_DATAORACON = '19700101 00:00:00' WHERE PR_DATAORACON IS NULL;
|
||||||
|
ALTER TABLE PAF2800F ALTER COLUMN PR_DATAORACON DATETIME NOT NULL;
|
||||||
|
|
||||||
|
-- PAFW300F
|
||||||
|
ALTER TABLE PAFW300F ALTER COLUMN PW_UPAG DATETIME;
|
||||||
|
ALTER TABLE PAFW300F ADD CONSTRAINT PAFW300F_TLLNNAPRV1 DEFAULT '19700101 00:00:00' FOR PW_UPAG;
|
||||||
|
UPDATE PAFW300F SET PW_UPAG = '19700101 00:00:00' WHERE PW_UPAG IS NULL;
|
||||||
|
ALTER TABLE PAFW300F ALTER COLUMN PW_UPAG DATETIME NOT NULL;
|
||||||
|
|
||||||
|
-- TLLNNAPRV -> Tolla non approva
|
Loading…
x
Reference in New Issue
Block a user