Patch level : 10.0 nopatch
Files correlati : pc0001.exe Ricompilazione Demo : [ ] Commento : Gestione Commesse GAM git-svn-id: svn://10.65.10.50/trunk@17024 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
80d1dfcd68
commit
539886a225
15
ps/pc0001.cpp
Executable file
15
ps/pc0001.cpp
Executable file
@ -0,0 +1,15 @@
|
||||
#include <xvt.h>
|
||||
#include "pc0001.h"
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
const int n = argc > 1 ? argv[1][1]-'0' : 0;
|
||||
switch (n)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
pc0001100(argc, argv); // Commesse
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
1
ps/pc0001.h
Executable file
1
ps/pc0001.h
Executable file
@ -0,0 +1 @@
|
||||
int pc0001100(int argc, char* argv[]);
|
259
ps/pc0001100.cpp
Executable file
259
ps/pc0001100.cpp
Executable file
@ -0,0 +1,259 @@
|
||||
#include "../ve/velib.h"
|
||||
#include "../ve/sconti.h"
|
||||
#include "../mg/mglib.h"
|
||||
|
||||
#include "../ve/vepriv.h"
|
||||
#include "../ve/veuml.h"
|
||||
|
||||
#include <automask.h>
|
||||
#include <defmask.h>
|
||||
#include <execp.h>
|
||||
#include <agasys.h>
|
||||
#include <tabutil.h>
|
||||
#include <utility.h>
|
||||
|
||||
#include "../mg/anamag.h"
|
||||
#include "../ve/ve0100.h"
|
||||
#include "../ve/veini.h"
|
||||
#include "../ve/veuml.h"
|
||||
#include "../ve/veuml1.h"
|
||||
#include "../ve/verig.h"
|
||||
|
||||
#include <clifo.h>
|
||||
#include "pc0001.h"
|
||||
|
||||
class TCommesse_mask : public TDocumento_mask
|
||||
{
|
||||
TBit_array _modified_rows;
|
||||
TBit_array _deleted_rows;
|
||||
int _last_row;
|
||||
|
||||
protected:
|
||||
static bool cc_notify(TSheet_field& ss, int r, KEY key);
|
||||
|
||||
|
||||
public:
|
||||
TBit_array & modified_rows() { return _modified_rows;}
|
||||
TBit_array & deleted_rows() {return _deleted_rows;}
|
||||
void reset_last_row() { _last_row = -1;}
|
||||
void set_last_row(int r) { _last_row = r;}
|
||||
int last_row() const { return _last_row;}
|
||||
bool modified(long idriga) const{ return _modified_rows[(int)idriga];}
|
||||
bool deleted(long idriga) const {return _deleted_rows[(int)idriga];}
|
||||
TCommesse_mask(const char* tipodoc);
|
||||
virtual ~TCommesse_mask() {}
|
||||
};
|
||||
|
||||
bool TCommesse_mask::cc_notify( TSheet_field& ss, int r, KEY key )
|
||||
{
|
||||
TCommesse_mask& m = (TCommesse_mask&)ss.mask();
|
||||
TDocumento& doc = m.doc();
|
||||
|
||||
if ( key == K_ENTER )
|
||||
{
|
||||
TRiga_documento& riga = doc[r + 1];
|
||||
const long idriga = riga.get_long(RDOC_IDRIGA);
|
||||
|
||||
m.modified_rows().set(idriga);
|
||||
}
|
||||
else
|
||||
if ( key == K_TAB && m.is_running() && m.last_row() != r)
|
||||
{
|
||||
m.set_last_row(r);
|
||||
TRiga_documento& riga = doc[r + 1];
|
||||
const long idriga = riga.get_long(RDOC_IDRIGA);
|
||||
|
||||
if (!m.modified(idriga))
|
||||
{
|
||||
TToken_string key;
|
||||
key.add(riga.get(RDOC_CODNUM));
|
||||
key.add(riga.get(RDOC_ANNO));
|
||||
key.add(riga.get(RDOC_PROVV));
|
||||
key.add(riga.get(RDOC_NDOC));
|
||||
for (int i = 1; ; i++)
|
||||
{
|
||||
key.add(i, 4);
|
||||
|
||||
const TRectype& rec = cache().get(LF_RIGHEDOC, key);
|
||||
|
||||
if (rec.empty()) break;
|
||||
if (rec.get_long(RDOC_IDRIGA) == idriga)
|
||||
{
|
||||
TDocumento::copy_data(riga, rec);
|
||||
riga.autoload(ss);
|
||||
ss.check_row(r, 0x2);
|
||||
ss.force_update(r);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
if ( key == K_DEL ) // Cancellazione
|
||||
{
|
||||
TRiga_documento& riga = doc[r + 1];
|
||||
const long idriga = riga.get_long(RDOC_IDRIGA);
|
||||
|
||||
m.deleted_rows().set(idriga);
|
||||
m.modified_rows().set(idriga, false);
|
||||
}
|
||||
else
|
||||
if (key == K_CTRL + K_INS)
|
||||
{
|
||||
doc.set_row_ids();
|
||||
TRiga_documento & riga = doc[r + 1];
|
||||
const long idriga = riga.get_long(RDOC_IDRIGA);
|
||||
|
||||
m.modified_rows().set(idriga);
|
||||
}
|
||||
return TDocumento_mask::ss_notify(ss, r,key);
|
||||
}
|
||||
|
||||
TCommesse_mask::TCommesse_mask(const char* tipodoc):
|
||||
TDocumento_mask(tipodoc), _last_row(-1)
|
||||
{
|
||||
sfield(F_SHEET).set_notify( cc_notify );
|
||||
}
|
||||
|
||||
// Definizione della classe dell'applicazione motore
|
||||
class TCommesse_application : public TMotore_application
|
||||
{
|
||||
TAssoc_array _masks; // assoc_array delle maschere da utilizzare
|
||||
TString4 _tipodoc;
|
||||
TBit_array _modified;
|
||||
|
||||
protected:
|
||||
virtual TMask* get_mask( int mode );
|
||||
virtual int read( TMask& m );
|
||||
virtual int rewrite( const TMask& m );
|
||||
|
||||
public:
|
||||
virtual TMask & query_mask();
|
||||
virtual TDocumento_mask & edit_mask() const;
|
||||
|
||||
TCommesse_application() {}
|
||||
};
|
||||
|
||||
inline TCommesse_application& pcapp() { return (TCommesse_application &) main_app(); };
|
||||
|
||||
TMask& TCommesse_application::query_mask()
|
||||
{
|
||||
TMask* m = (TMask*) _masks.objptr("pc0001100a");
|
||||
if (m == NULL)
|
||||
{
|
||||
m = new TMask("pc0001100a");
|
||||
_masks.add("pc0001100a", m);
|
||||
}
|
||||
return *m;
|
||||
}
|
||||
|
||||
TDocumento_mask& TCommesse_application::edit_mask() const
|
||||
{
|
||||
TDocumento_mask* m = (TDocumento_mask*) _masks.objptr(_tipodoc);
|
||||
if (m == NULL)
|
||||
{
|
||||
m = new TCommesse_mask(_tipodoc);
|
||||
((TAssoc_array&)_masks).add(_tipodoc, m);
|
||||
}
|
||||
return *m;
|
||||
}
|
||||
|
||||
TMask* TCommesse_application::get_mask( int mode )
|
||||
{
|
||||
TMask* m = NULL;
|
||||
if (mode == MODE_MOD || mode == MODE_INS)
|
||||
{
|
||||
_tipodoc = query_mask().get(F_TIPODOC);
|
||||
m = &edit_mask();
|
||||
}
|
||||
else
|
||||
m = &query_mask();
|
||||
return m;
|
||||
}
|
||||
|
||||
// maschera di ricerca
|
||||
// maschera di edit
|
||||
int TCommesse_application::read(TMask& m )
|
||||
{
|
||||
TCommesse_mask & mask = (TCommesse_mask &) m;
|
||||
mask.modified_rows().reset();
|
||||
mask.deleted_rows().reset();
|
||||
mask.reset_last_row();
|
||||
|
||||
const int err = TMotore_application::read(m);
|
||||
if (err == NOERR)
|
||||
((TDocumento_mask &) m).doc().read(_isequal, _unlock);
|
||||
return err;
|
||||
}
|
||||
|
||||
int TCommesse_application::rewrite( const TMask& m )
|
||||
{
|
||||
int err = NOERR;
|
||||
const TCommesse_mask & mask = (const TCommesse_mask &) m;
|
||||
const TDocumento & maskdoc = mask.doc();
|
||||
TDocumento outdoc = maskdoc;
|
||||
while ((err = outdoc.read(_isequal, _testandlock)) == _islocked)
|
||||
xvt_sys_sleep (500);
|
||||
if (err == NOERR)
|
||||
{
|
||||
for (int p = mask.fields()-1; p >= 0; p--)
|
||||
{
|
||||
TMask_field& f = mask.fld(p);
|
||||
const TFieldref* fr = f.field();
|
||||
if (fr != NULL)
|
||||
fr->write(f.get(), outdoc);
|
||||
}
|
||||
|
||||
int outrows = outdoc.physical_rows();
|
||||
|
||||
for (int j = outrows; j > 1; j--)
|
||||
{
|
||||
TRiga_documento & outrow = outdoc[j];
|
||||
const long idriga = outrow.get_long(RDOC_IDRIGA);
|
||||
|
||||
if (mask.deleted(idriga))
|
||||
outdoc.destroy_row(j, true);
|
||||
}
|
||||
outrows = outdoc.physical_rows();
|
||||
const int rows = maskdoc.physical_rows();
|
||||
for (int i = 1; i <= rows; i++)
|
||||
{
|
||||
const TRiga_documento & row = maskdoc[i];
|
||||
const long idriga = row.get_long(RDOC_IDRIGA);
|
||||
|
||||
if (mask.modified(idriga))
|
||||
{
|
||||
bool newrow = true;
|
||||
|
||||
for (int j = 1; newrow && j <= outrows; j++)
|
||||
{
|
||||
TRiga_documento & outrow = outdoc[j];
|
||||
|
||||
if (idriga == outrow.get_int(RDOC_IDRIGA))
|
||||
{
|
||||
TDocumento::copy_data(outrow, row);
|
||||
newrow = false;
|
||||
}
|
||||
}
|
||||
if (newrow)
|
||||
{
|
||||
outdoc.insert_row(i);
|
||||
|
||||
TRiga_documento & outrow = outdoc[i];
|
||||
|
||||
TDocumento::copy_data(outrow, row);
|
||||
}
|
||||
}
|
||||
}
|
||||
err = outdoc.rewrite();
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
int pc0001100( int argc, char* argv[])
|
||||
{
|
||||
TCommesse_application a;
|
||||
|
||||
a.run( argc, argv, TR("Commesse GAM"));
|
||||
return 0;
|
||||
}
|
176
ps/pc0001100a.uml
Executable file
176
ps/pc0001100a.uml
Executable file
@ -0,0 +1,176 @@
|
||||
#include "..\ve\veuml.h"
|
||||
|
||||
TOOLBAR "" 0 -2 0 2
|
||||
#include "toolbar.h"
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Estremi del documento" 1 1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 1 "@bDitta"
|
||||
END
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 3 2 "Codice "
|
||||
FLAGS "FD"
|
||||
USE LF_NDITTE
|
||||
CHECKTYPE NORMAL
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
OUTPUT F_RAGSOCDITTA RAGSOC
|
||||
END
|
||||
|
||||
STRING F_RAGSOCDITTA 50
|
||||
BEGIN
|
||||
PROMPT 17 2 "Ragione "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 7
|
||||
BEGIN
|
||||
PROMPT 1 4 "Estremi del documento"
|
||||
END
|
||||
|
||||
LISTBOX F_PROVV 14
|
||||
BEGIN
|
||||
FIELD PROVV
|
||||
PROMPT 46 7 "Tipo "
|
||||
ITEM "D|Definitiva "
|
||||
ITEM "P|Provvisoria"
|
||||
KEY 1 2
|
||||
FLAGS "DPG"
|
||||
END
|
||||
|
||||
LISTBOX F_CODNUM 4
|
||||
BEGIN
|
||||
PROMPT 2 5 "Numerazione "
|
||||
FIELD CODNUM
|
||||
ITEM "COM|COM"
|
||||
HELP "Codice numerazione"
|
||||
FLAG "D"
|
||||
WARNING "Numerazione assente"
|
||||
KEY 1 2
|
||||
END
|
||||
|
||||
LISTBOX F_DESNUM 50
|
||||
BEGIN
|
||||
PROMPT 24 5 ""
|
||||
ITEM "COM|Commesse"
|
||||
HELP "Descrizione numerazione"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
LISTBOX F_TIPODOC 4
|
||||
BEGIN
|
||||
PROMPT 2 6 "Tipo "
|
||||
FIELD TIPODOC
|
||||
ITEM "COM|COM"
|
||||
HELP "Codice tipo documento"
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
LISTBOX F_DESTIPODOC 50
|
||||
BEGIN
|
||||
PROMPT 24 6 ""
|
||||
ITEM "COM|Commessa"
|
||||
HELP "Descrizione tipo documento"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 2 7 "Esercizio "
|
||||
FIELD ANNO
|
||||
CHECKTYPE REQUIRED
|
||||
NUM_EXPR #F_ANNO>0
|
||||
FLAG "AP"
|
||||
KEY 1 2
|
||||
WARNING "Inserire un anno valido"
|
||||
END
|
||||
|
||||
NUMBER F_NDOC 6
|
||||
BEGIN
|
||||
PROMPT 24 7 "Numero "
|
||||
FIELD NDOC
|
||||
USE LF_DOC
|
||||
JOIN LF_CLIFO TO LF_DOC INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||
INPUT PROVV F_PROVV SELECT
|
||||
INPUT ANNO F_ANNO SELECT
|
||||
INPUT CODNUM F_CODNUM SELECT
|
||||
INPUT NDOC F_NDOC
|
||||
DISPLAY "Num." CODNUM
|
||||
DISPLAY "Anno" ANNO
|
||||
DISPLAY "Provv" PROVV
|
||||
DISPLAY "Tipo" TIPODOC
|
||||
DISPLAY "N.Doc. " NDOC
|
||||
DISPLAY "Stato@R" STATO
|
||||
DISPLAY "Data\ndocumento" DATADOC
|
||||
DISPLAY "C/F" TIPOCF
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
|
||||
OUTPUT F_NDOC NDOC
|
||||
OUTPUT F_STATO STATO
|
||||
OUTPUT F_TIPODOC TIPODOC
|
||||
OUTPUT F_PROVV PROVV
|
||||
CHECKTYPE REQUIRED
|
||||
KEY 1 2
|
||||
FLAG "R"
|
||||
END
|
||||
|
||||
STRING F_STATO 1
|
||||
BEGIN
|
||||
PROMPT 69 7 "Stato "
|
||||
FIELD STATO
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
LIST F_TIPOCF 1 12
|
||||
BEGIN
|
||||
PROMPT 2 8 "Tipo "
|
||||
ITEM "C|Cliente"
|
||||
ITEM "F|Fornitore"
|
||||
KEY 2
|
||||
END
|
||||
|
||||
NUMBER F_CODCF 6
|
||||
BEGIN
|
||||
PROMPT 24 8 "Codice "
|
||||
USE LF_DOC KEY 2 SELECT (CODNUM==#F_CODNUM) && (PROVV==#F_PROVV) && (ANNO==#F_ANNO)
|
||||
JOIN LF_CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||
INPUT TIPOCF F_TIPOCF SELECT
|
||||
INPUT CODCF F_CODCF
|
||||
INPUT PROVV F_PROVV
|
||||
INPUT ANNO F_ANNO
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
|
||||
DISPLAY "Partita IVA@12" LF_CLIFO->PAIV
|
||||
DISPLAY "Num." CODNUM
|
||||
DISPLAY "Anno" ANNO
|
||||
DISPLAY "Provv" PROVV
|
||||
DISPLAY "Tipo" TIPODOC
|
||||
DISPLAY "N.Doc. " NDOC
|
||||
DISPLAY "Data\ndocumento" DATADOC
|
||||
DISPLAY "Valuta" CODVAL
|
||||
DISPLAY "Totale\ndocumento@18V" G1:TOTDOC
|
||||
COPY OUTPUT F_NDOC
|
||||
OUTPUT F_CODCF CODCF
|
||||
CHECKTYPE NORMAL
|
||||
KEY 2
|
||||
END
|
||||
|
||||
STRING F_NUMDOCRIF 7
|
||||
BEGIN
|
||||
PROMPT 46 8 "Riferimento "
|
||||
FLAGS "B"
|
||||
END
|
||||
|
||||
STRING F_RAGSOCSEARCH 50
|
||||
BEGIN
|
||||
PROMPT 2 9 "Ragione Sociale "
|
||||
FLAGS "B"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
Loading…
x
Reference in New Issue
Block a user