Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@20382 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
5c2b76f377
commit
f782770605
270
ps/ps1001300.cpp
270
ps/ps1001300.cpp
@ -15,6 +15,81 @@
|
|||||||
#include "ps1001.h"
|
#include "ps1001.h"
|
||||||
#include "ps1001300a.h"
|
#include "ps1001300a.h"
|
||||||
|
|
||||||
|
///////////////////////////////////
|
||||||
|
// Metodi static di ordinamento
|
||||||
|
///////////////////////////////////
|
||||||
|
//ordina per numreg/numrig (long+int) oppure per numreg/datacomp/autofcomp/datafcomp
|
||||||
|
static int compare_by_numrig(TSheet_field & s, int r1, int r2)
|
||||||
|
{
|
||||||
|
TToken_string& s1 = s.row(r1);
|
||||||
|
TToken_string& s2 = s.row(r2);
|
||||||
|
|
||||||
|
//prima guarda il numreg..
|
||||||
|
const int numreg_pos = s.cid2index(S_NUMREG);
|
||||||
|
const long b11 = s1.get_long(numreg_pos);
|
||||||
|
const long b21 = s2.get_long(numreg_pos);
|
||||||
|
int cmp = b11 - b21;
|
||||||
|
|
||||||
|
|
||||||
|
if (cmp == 0)
|
||||||
|
{
|
||||||
|
if (b11 > 0) //..poi il numrig
|
||||||
|
{
|
||||||
|
const int numrig_pos = numreg_pos + 1;
|
||||||
|
const int c11 = s1.get_int(numrig_pos);
|
||||||
|
const int c21 = s2.get_int(numrig_pos);
|
||||||
|
cmp = c11 - c21;
|
||||||
|
}
|
||||||
|
else //..oppure le date se numreg=0 (b11=b12 = 0)
|
||||||
|
{
|
||||||
|
const int datacomp_pos = s.cid2index(S_DATACOMP);
|
||||||
|
const TDate d11 = s1.get(datacomp_pos);
|
||||||
|
const TDate d21 = s2.get(datacomp_pos);
|
||||||
|
cmp = int(d11 - d21);
|
||||||
|
if (cmp == 0)
|
||||||
|
{
|
||||||
|
const int autofcomp_pos = s.cid2index(S_AUTOFCOMP);
|
||||||
|
const char* e11 = s1.get(autofcomp_pos);
|
||||||
|
const char* e21 = s2.get(autofcomp_pos);
|
||||||
|
if (e11 == e21)
|
||||||
|
{
|
||||||
|
const int datafcomp_pos = s.cid2index(S_DATAFCOMP);
|
||||||
|
const TDate f11 = s1.get(datafcomp_pos);
|
||||||
|
const TDate f21 = s2.get(datafcomp_pos);
|
||||||
|
cmp = int(f11 - f21);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return cmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
//nota: nelle ststic non si possono usare i _pos_quel, perchè sono di maschera
|
||||||
|
//ordina le righe per sede/fase/conto (string+string+string)
|
||||||
|
static int compare_by_fase(TSheet_field & s, int r1, int r2)
|
||||||
|
{
|
||||||
|
TToken_string& s1 = s.row(r1);
|
||||||
|
TToken_string& s2 = s.row(r2);
|
||||||
|
|
||||||
|
TToken_string c1;
|
||||||
|
c1.add(s1.get(1));
|
||||||
|
c1.add(s1.get(2));
|
||||||
|
c1.add(s1.get(3));
|
||||||
|
|
||||||
|
TToken_string c2;
|
||||||
|
c2.add(s2.get(1));
|
||||||
|
c2.add(s2.get(2));
|
||||||
|
c2.add(s2.get(3));
|
||||||
|
|
||||||
|
int cmp = c1.compare(c2);
|
||||||
|
|
||||||
|
if (cmp == 0)
|
||||||
|
cmp = compare_by_numrig(s, r1, r2);
|
||||||
|
|
||||||
|
return cmp;
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// TAutomask
|
// TAutomask
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -31,11 +106,13 @@ protected:
|
|||||||
int carica_rmovana();
|
int carica_rmovana();
|
||||||
bool one_checked() const; //(on_field) controlla se nella colonna dei check ce ne è almeno 1 checkato
|
bool one_checked() const; //(on_field) controlla se nella colonna dei check ce ne è almeno 1 checkato
|
||||||
void check_all(const bool checked); //(on_field) checka-dechecka la colonna dei check
|
void check_all(const bool checked); //(on_field) checka-dechecka la colonna dei check
|
||||||
int find_sister_rows(const int curr_sister, int& first_sister, int& last_sister); //(on_field) trova le righe con la stessa chiave della riga corrente
|
int find_sister_rows(const int curr_sister, int& first_sister, int& last_sister, const bool by_numreg = false); //(on_field) trova le righe..
|
||||||
void build_key(int i, TToken_string& key); //(find_sister_rows) crea la chiave della riga con cui cercare le sorelle
|
//con la stessa chiave della riga corrente e della chiave selezionata
|
||||||
|
void build_key(int i, TToken_string& key); //(find_sister_rows) crea la chiave cdc/fase/conto della riga con cui cercare le sorelle
|
||||||
|
void build_key_by_numreg(int i, TToken_string& key); //(find_sister_rows) crea la chiave numreg della riga con cui cercare le sorelle
|
||||||
void aggiorna_saldi_preventivi(TSheet_field& sf_righe, const int curr_riga); //(carica_rmovana()) crea i saldi preventivi in base agli importi
|
void aggiorna_saldi_preventivi(TSheet_field& sf_righe, const int curr_riga); //(carica_rmovana()) crea i saldi preventivi in base agli importi
|
||||||
void save_commessa(); //(save()) salva i cambiamenti di date della commessa esaminata
|
bool save_commessa(); //(save()) salva i cambiamenti di date della commessa esaminata
|
||||||
void save_sheet(); //(save()) salva i cambiamenti nello sheet
|
bool save_sheet(); //(save()) salva i cambiamenti nello sheet
|
||||||
bool save(); //(on_field) gestisce l'ordine dei salvataggi
|
bool save(); //(on_field) gestisce l'ordine dei salvataggi
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -75,6 +152,7 @@ TVariazione_budget_mask::~TVariazione_budget_mask()
|
|||||||
ditta_ini.set("CodCaus", get(F_CODCAUS));
|
ditta_ini.set("CodCaus", get(F_CODCAUS));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//crea la chiave cdc/fase/conto
|
||||||
void TVariazione_budget_mask::build_key(int i, TToken_string& key)
|
void TVariazione_budget_mask::build_key(int i, TToken_string& key)
|
||||||
{
|
{
|
||||||
TSheet_field& sf_righe = sfield(F_RIGHE);
|
TSheet_field& sf_righe = sfield(F_RIGHE);
|
||||||
@ -86,18 +164,36 @@ void TVariazione_budget_mask::build_key(int i, TToken_string& key)
|
|||||||
key.add(curr_riga.get(_pos_conto));
|
key.add(curr_riga.get(_pos_conto));
|
||||||
}
|
}
|
||||||
|
|
||||||
int TVariazione_budget_mask::find_sister_rows(const int curr_sister, int& first_sister, int& last_sister)
|
|
||||||
|
void TVariazione_budget_mask::build_key_by_numreg(int i, TToken_string& key)
|
||||||
|
{
|
||||||
|
TSheet_field& sf_righe = sfield(F_RIGHE);
|
||||||
|
TToken_string curr_riga = sf_righe.row(i);
|
||||||
|
//chiave della riga sorella originale
|
||||||
|
key.cut(0);
|
||||||
|
key.add(curr_riga.get(_pos_numreg));
|
||||||
|
}
|
||||||
|
|
||||||
|
//cerca le righe sorelle per chiave cdc/fase/conto o numreg (dipende da by_numreg)
|
||||||
|
int TVariazione_budget_mask::find_sister_rows(const int curr_sister, int& first_sister, int& last_sister, const bool by_numreg)
|
||||||
{
|
{
|
||||||
first_sister = last_sister = curr_sister;
|
first_sister = last_sister = curr_sister;
|
||||||
|
|
||||||
TToken_string key;
|
TToken_string key;
|
||||||
build_key(curr_sister, key);
|
if (by_numreg)
|
||||||
|
build_key_by_numreg(curr_sister, key);
|
||||||
|
else
|
||||||
|
build_key(curr_sister, key);
|
||||||
|
|
||||||
TToken_string key_iesima;
|
TToken_string key_iesima;
|
||||||
|
|
||||||
for (int i = curr_sister - 1; i >= 0; i--)
|
for (int i = curr_sister - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
build_key(i, key_iesima);
|
if (by_numreg)
|
||||||
|
build_key_by_numreg(i, key_iesima);
|
||||||
|
else
|
||||||
|
build_key(i, key_iesima);
|
||||||
|
|
||||||
if (key == key_iesima)
|
if (key == key_iesima)
|
||||||
first_sister = i;
|
first_sister = i;
|
||||||
else
|
else
|
||||||
@ -108,7 +204,11 @@ int TVariazione_budget_mask::find_sister_rows(const int curr_sister, int& first_
|
|||||||
const long items = sf_righe.items();
|
const long items = sf_righe.items();
|
||||||
for (int i = curr_sister + 1; i < items; i++)
|
for (int i = curr_sister + 1; i < items; i++)
|
||||||
{
|
{
|
||||||
build_key(i, key_iesima);
|
if (by_numreg)
|
||||||
|
build_key_by_numreg(i, key_iesima);
|
||||||
|
else
|
||||||
|
build_key(i, key_iesima);
|
||||||
|
|
||||||
if (key == key_iesima)
|
if (key == key_iesima)
|
||||||
last_sister = i;
|
last_sister = i;
|
||||||
else
|
else
|
||||||
@ -182,17 +282,18 @@ bool TVariazione_budget_mask::on_field_event(TOperable_field& o, TField_event e,
|
|||||||
|
|
||||||
//bottoni
|
//bottoni
|
||||||
case DLG_CANCEL:
|
case DLG_CANCEL:
|
||||||
if (e == fe_button)
|
if (e == fe_button && jolly == 0) //jolly serve per specificare che è il DLG_CANCEL della maschera principale
|
||||||
{
|
{
|
||||||
if (_dirty)
|
if (_dirty)
|
||||||
{
|
{
|
||||||
if (yesno_box("Salvare le modifiche effettuate?"))
|
if (yesno_box("Salvare le modifiche effettuate?"))
|
||||||
save();
|
if (!save()) //attenzione! se la save non riesce si deve fermare senza resettare le modifiche!
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
enable(F_CODCMS);
|
enable(F_CODCMS);
|
||||||
enable(F_DESCRIZ);
|
enable(F_DESCRIZ);
|
||||||
sfield(F_RIGHE).destroy();
|
sfield(F_RIGHE).destroy();
|
||||||
_dirty = false;
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -306,7 +407,7 @@ bool TVariazione_budget_mask::on_field_event(TOperable_field& o, TField_event e,
|
|||||||
// Metodi della on_field_event
|
// Metodi della on_field_event
|
||||||
///////////////////////////////////
|
///////////////////////////////////
|
||||||
//salva la commessa con le eventuali modifiche effettuate sulle date
|
//salva la commessa con le eventuali modifiche effettuate sulle date
|
||||||
void TVariazione_budget_mask::save_commessa()
|
bool TVariazione_budget_mask::save_commessa()
|
||||||
{
|
{
|
||||||
TLocalisamfile commesse(LF_COMMESSE);
|
TLocalisamfile commesse(LF_COMMESSE);
|
||||||
commesse.put(COMMESSE_CODCMS, get(F_CODCMS));
|
commesse.put(COMMESSE_CODCMS, get(F_CODCMS));
|
||||||
@ -318,12 +419,96 @@ void TVariazione_budget_mask::save_commessa()
|
|||||||
commesse.put(COMMESSE_PROROGA, get_bool(F_PROROGATA));
|
commesse.put(COMMESSE_PROROGA, get_bool(F_PROROGATA));
|
||||||
commesse.put(COMMESSE_DATAPROR, get_date(F_DATAPRORCMS));
|
commesse.put(COMMESSE_DATAPROR, get_date(F_DATAPRORCMS));
|
||||||
//solo la rewrite perchè la commessa ovviamente esiste già
|
//solo la rewrite perchè la commessa ovviamente esiste già
|
||||||
commesse.rewrite();
|
err = commesse.rewrite();
|
||||||
}
|
}
|
||||||
|
return err == NOERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TVariazione_budget_mask::save_sheet()
|
//salva lo sheet...lasciate ogni speranza voi che entrate!
|
||||||
|
bool TVariazione_budget_mask::save_sheet()
|
||||||
{
|
{
|
||||||
|
//1)ordina le righe per numreg/numrig
|
||||||
|
TSheet_field& sf_righe = sfield(F_RIGHE);
|
||||||
|
sf_righe.sort(compare_by_numrig);
|
||||||
|
|
||||||
|
//file dei movana qui richiamato in quanto può essere modificato in vari punti successivi...
|
||||||
|
TLocalisamfile file_movana(LF_MOVANA);
|
||||||
|
|
||||||
|
//2)cerca le sorelle per numreg/numrig
|
||||||
|
FOR_EACH_SHEET_ROW(sf_righe, r, riga)
|
||||||
|
{
|
||||||
|
int first, last;
|
||||||
|
const int sisters = find_sister_rows(r, first, last, true);
|
||||||
|
const long numreg = sf_righe.row(r).get_long(_pos_numreg);
|
||||||
|
|
||||||
|
//giro di controllo sulle date; le righe sheet, eventualmente modificate, devono avere un intervallo date..
|
||||||
|
//..compatibile con quello del movimento
|
||||||
|
if (numreg > 0)
|
||||||
|
{
|
||||||
|
TAnal_mov movana(numreg);
|
||||||
|
const TDate datacomp = movana.get_date(MOVANA_DATACOMP);
|
||||||
|
TDate datafcomp = movana.get_date(MOVANA_DATAFCOMP);
|
||||||
|
const bool autofcomp = movana.get_bool(MOVANA_AUTOFCOMP);
|
||||||
|
if (!datafcomp.ok() && !autofcomp)
|
||||||
|
datafcomp = datacomp;
|
||||||
|
|
||||||
|
//controlla le righe sorelle dello sheet; se le date non rientrano in quelle della testata -> le righe..
|
||||||
|
//..vanno considerate nuove, e quindi va messo a 0 il loro numreg/numrig
|
||||||
|
bool row_modified = false;
|
||||||
|
for (int i = last; i >= first; i--)
|
||||||
|
{
|
||||||
|
//date testata
|
||||||
|
const bool r_autofcomp = *sf_righe.cell(i, _pos_autofcomp) > ' ';
|
||||||
|
const TDate r_datacomp = sf_righe.cell(i, _pos_datacomp);
|
||||||
|
TDate r_datafcomp = sf_righe.cell(i, _pos_datafcomp);
|
||||||
|
if (r_datafcomp < r_datacomp)
|
||||||
|
r_datafcomp = r_datacomp;
|
||||||
|
|
||||||
|
//importo riga: se nullo la riga verrà eliminata in quanto inutile all'umanità
|
||||||
|
const int r_numrig = atoi(sf_righe.cell(i, _pos_numrig));
|
||||||
|
const real r_importo = sf_righe.cell(i, _pos_imp);
|
||||||
|
|
||||||
|
//le righe da liberare sono quelle che non rispettano i vincoli sulle date
|
||||||
|
if (r_autofcomp != autofcomp || r_datacomp != datacomp || r_datafcomp != datafcomp || r_importo.is_zero())
|
||||||
|
{
|
||||||
|
sf_righe.row(i).add("", _pos_numreg);
|
||||||
|
sf_righe.row(i).add("", _pos_numrig);
|
||||||
|
//elimina la riga dal movana
|
||||||
|
row_modified |= movana.destroy_row(r_numrig, true);
|
||||||
|
}
|
||||||
|
else //qui invece ci vanno le righe modificate che sono solo da riscrivere
|
||||||
|
{
|
||||||
|
TRectype& rmovana = movana.body()[r_numrig];
|
||||||
|
const real importo = rmovana.get_real(RMOVANA_IMPORTO);
|
||||||
|
if (importo != r_importo)
|
||||||
|
{
|
||||||
|
rmovana.put(RMOVANA_IMPORTO, r_importo);
|
||||||
|
row_modified = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* r_descr = sf_righe.cell(i, _pos_descr);
|
||||||
|
const TString& descr = rmovana.get(RMOVANA_DESCR);
|
||||||
|
if (descr != r_descr)
|
||||||
|
{
|
||||||
|
rmovana.put(RMOVANA_DESCR, r_descr);
|
||||||
|
row_modified = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (row_modified)
|
||||||
|
{
|
||||||
|
movana.update_totdoc();
|
||||||
|
movana.rewrite(file_movana);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//finito il giro sulle sorelle; si passa alla successiva famiglia (ovvero al successivo numreg)
|
||||||
|
r = last;
|
||||||
|
}
|
||||||
|
|
||||||
|
//le righe vanno rimesse in ordine di chiave cdc/fase/conto
|
||||||
|
sf_righe.sort(compare_by_fase);
|
||||||
|
sf_righe.force_update();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TVariazione_budget_mask::save()
|
bool TVariazione_budget_mask::save()
|
||||||
@ -331,11 +516,10 @@ bool TVariazione_budget_mask::save()
|
|||||||
//salva nel ditta.ini la causale sulla maschera
|
//salva nel ditta.ini la causale sulla maschera
|
||||||
TConfig ditta_ini(CONFIG_DITTA, "ps1001");
|
TConfig ditta_ini(CONFIG_DITTA, "ps1001");
|
||||||
ditta_ini.set("CodCaus", get(F_CODCAUS));
|
ditta_ini.set("CodCaus", get(F_CODCAUS));
|
||||||
//salva le modifiche alle date della commessa
|
|
||||||
save_commessa();
|
//salva le modifiche alle date della commessa e lo sheet
|
||||||
//salva lo sheet (è il programma principale)
|
if (save_commessa() && save_sheet())
|
||||||
save_sheet();
|
_dirty = false;
|
||||||
_dirty = false;
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -391,51 +575,6 @@ void TVariazione_budget_mask::aggiorna_saldi_preventivi(TSheet_field& sf_righe,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//ordina per numreg/numrig (long+int)
|
|
||||||
static int compare_by_numrig(TSheet_field & s, int r1, int r2)
|
|
||||||
{
|
|
||||||
TToken_string& s1 = s.row(r1);
|
|
||||||
TToken_string& s2 = s.row(r2);
|
|
||||||
|
|
||||||
//prima guarda il numreg..
|
|
||||||
long c10 = s1.get_long(12);
|
|
||||||
long c20 = s2.get_long(12);
|
|
||||||
int cmp = c10 - c20;
|
|
||||||
//..poi il numrig
|
|
||||||
if (cmp == 0)
|
|
||||||
{
|
|
||||||
int c11 = s1.get_int(13);
|
|
||||||
int c21 = s2.get_int(13);
|
|
||||||
cmp = c11 - c21;
|
|
||||||
}
|
|
||||||
|
|
||||||
return cmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
//nota: nelle ststic non si possono usare i _pos_quel, perchè sono di maschera
|
|
||||||
//ordina le righe per sede/fase/conto (string+string+string)
|
|
||||||
static int compare_by_fase(TSheet_field & s, int r1, int r2)
|
|
||||||
{
|
|
||||||
TToken_string& s1 = s.row(r1);
|
|
||||||
TToken_string& s2 = s.row(r2);
|
|
||||||
|
|
||||||
TToken_string c1;
|
|
||||||
c1.add(s1.get(1));
|
|
||||||
c1.add(s1.get(2));
|
|
||||||
c1.add(s1.get(3));
|
|
||||||
|
|
||||||
TToken_string c2;
|
|
||||||
c2.add(s2.get(1));
|
|
||||||
c2.add(s2.get(2));
|
|
||||||
c2.add(s2.get(3));
|
|
||||||
|
|
||||||
int cmp = c1.compare(c2);
|
|
||||||
|
|
||||||
if (cmp == 0)
|
|
||||||
cmp = compare_by_numrig(s, r1, r2);
|
|
||||||
|
|
||||||
return cmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
int TVariazione_budget_mask::carica_rmovana()
|
int TVariazione_budget_mask::carica_rmovana()
|
||||||
{
|
{
|
||||||
@ -539,6 +678,9 @@ int TVariazione_budget_mask::carica_rmovana()
|
|||||||
//e poi aggiorna il video!
|
//e poi aggiorna il video!
|
||||||
sf_righe.force_update();
|
sf_righe.force_update();
|
||||||
|
|
||||||
|
//al momento del caricamento NON ci sono state modifiche!
|
||||||
|
_dirty = false;
|
||||||
|
|
||||||
return sf_righe.items();
|
return sf_righe.items();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,55 +178,58 @@ ENDMASK
|
|||||||
|
|
||||||
/////////////////////////////////////////
|
/////////////////////////////////////////
|
||||||
//maschera di riga
|
//maschera di riga
|
||||||
PAGE "Riga analitica" -1 -1 70 15
|
PAGE "Riga analitica" -1 -1 70 16
|
||||||
|
|
||||||
BOOLEAN S_CHECK
|
BOOLEAN S_CHECK
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 "Applica "
|
PROMPT 1 1 "Applica"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING S_CDC 4
|
STRING S_CDC 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 2 "Sede "
|
PROMPT 1 2 "Sede "
|
||||||
FLAGS "L"
|
FLAGS "L"
|
||||||
|
GROUP 1
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING S_FASE 5
|
STRING S_FASE 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 3 "Fase "
|
PROMPT 1 3 "Fase "
|
||||||
FLAGS "L"
|
FLAGS "L"
|
||||||
|
GROUP 1
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING S_CONTO 12
|
STRING S_CONTO 12
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 4 "Conto "
|
PROMPT 1 4 "Conto "
|
||||||
FLAGS "L"
|
FLAGS "L"
|
||||||
|
GROUP 1
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE S_DATACOMP
|
DATE S_DATACOMP
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 5 "Ini.comp "
|
PROMPT 1 5 "Ini.compet."
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN S_AUTOFCOMP
|
BOOLEAN S_AUTOFCOMP
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 6 "AutoComp "
|
PROMPT 1 6 "AutoCompet."
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE S_DATAFCOMP
|
DATE S_DATAFCOMP
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 7 "Fin.comp "
|
PROMPT 1 7 "Fin.compet."
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING S_COSRIC 1
|
STRING S_COSRIC 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 8 "Cst/Ric "
|
PROMPT 1 8 "Csti/Ricavi"
|
||||||
FLAGS "L"
|
FLAGS "L"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER S_IMPORTO 15 2
|
NUMBER S_IMPORTO 15 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 9 "Importo "
|
PROMPT 1 9 "Importo "
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER S_PREVENTIVO 15 2
|
NUMBER S_PREVENTIVO 15 2
|
||||||
@ -237,30 +240,32 @@ END
|
|||||||
|
|
||||||
NUMBER S_MATURATO 15 2
|
NUMBER S_MATURATO 15 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 11 "Maturato "
|
PROMPT 1 11 "Maturato "
|
||||||
FLAGS "L"
|
FLAGS "L"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING S_DESCR 50
|
STRING S_DESCR 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 12 "Descr. "
|
PROMPT 1 12 "Descrizione"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER S_NUMREG 7
|
NUMBER S_NUMREG 7
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 13 "N. reg. "
|
PROMPT 1 13 "N. reg. "
|
||||||
FLAGS "L"
|
FLAGS "GL"
|
||||||
|
MESSAGE EMPTY ENABLE,1@
|
||||||
|
MESSAGE DISABLE,1@
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER S_NUMRIG 3
|
NUMBER S_NUMRIG 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 14 "N. riga "
|
PROMPT 1 14 "Num. riga "
|
||||||
FLAGS "L"
|
FLAGS "L"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING S_TIPOMOV 1
|
STRING S_TIPOMOV 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 15 "Tipo "
|
PROMPT 1 15 "Tipo mov. "
|
||||||
FLAGS "L"
|
FLAGS "L"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user