Patch level :2.0 p@rtners
Files correlati :cg3.exe,cg3800a.msk/frm Ricompilazione Demo : [ ] Commento :aggiunto programma stampa fatture doppie (da finire: manca la stampa vera e propria) git-svn-id: svn://10.65.10.50/trunk@11746 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
d1a8ebeed0
commit
6820f85b66
219
cg/cg3800.cpp
Executable file
219
cg/cg3800.cpp
Executable file
@ -0,0 +1,219 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <automask.h>
|
||||||
|
#include <form.h>
|
||||||
|
#include <printer.h>
|
||||||
|
#include <progind.h>
|
||||||
|
|
||||||
|
#include <mov.h>
|
||||||
|
#include <partite.h>
|
||||||
|
#include <rmov.h>
|
||||||
|
#include <rmoviva.h>
|
||||||
|
|
||||||
|
#include "..\cg\cgsaldac.h"
|
||||||
|
#include "..\ve\velib.h"
|
||||||
|
|
||||||
|
#include "cg3800a.h"
|
||||||
|
#include "cg3800.h"
|
||||||
|
|
||||||
|
|
||||||
|
//===============================================================================================
|
||||||
|
//maschera
|
||||||
|
|
||||||
|
class TDouble_fatt_mask: public TAutomask
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
|
TDouble_fatt_mask():TAutomask("cg3800a") {}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TDouble_fatt_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
/* switch (o.dlg())
|
||||||
|
{
|
||||||
|
default: break;
|
||||||
|
}*/
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//===============================================================================================
|
||||||
|
//form
|
||||||
|
class TDouble_fatt_form : public TForm
|
||||||
|
{
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool validate(TForm_item &cf, TToken_string &s);
|
||||||
|
|
||||||
|
public:
|
||||||
|
void print(const TMask& m);
|
||||||
|
TDouble_fatt_form();
|
||||||
|
virtual ~TDouble_fatt_form();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
bool TDouble_fatt_form::validate(TForm_item &cf, TToken_string &s)
|
||||||
|
{
|
||||||
|
/* if (s == "_NEXTPAG")
|
||||||
|
{
|
||||||
|
_curr_pag ++; //aggiorna il contatore pagamenti quando ne trova uno sull'arrayone
|
||||||
|
return true;
|
||||||
|
}*/
|
||||||
|
return TForm::validate(cf,s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDouble_fatt_form::print(const TMask& m)
|
||||||
|
{
|
||||||
|
TPrint_section& header = section('H', odd_page);
|
||||||
|
header.find_field(FR_DADATA).set(m.get(F_DADATA));
|
||||||
|
header.find_field(FR_ADATA).set(m.get(F_ADATA));
|
||||||
|
|
||||||
|
TForm::print(); //chiama la vera print dopo aver azzerato il contatore
|
||||||
|
}
|
||||||
|
|
||||||
|
TDouble_fatt_form::TDouble_fatt_form() :TForm ("cg3800a")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
TDouble_fatt_form::~TDouble_fatt_form()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//===============================================================================================
|
||||||
|
//Applicazione
|
||||||
|
|
||||||
|
class TDouble_fatt : public TSkeleton_application
|
||||||
|
{
|
||||||
|
TAssoc_array _movimenti; //assocarray con tutti i movimenti
|
||||||
|
TPointer_array _duplicati;
|
||||||
|
|
||||||
|
TDouble_fatt_mask* _mask;
|
||||||
|
TDouble_fatt_form* _form;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void main_loop();
|
||||||
|
virtual bool create();
|
||||||
|
virtual bool destroy();
|
||||||
|
|
||||||
|
static bool mov_callback(const TRelation& rel, void* pJolly);
|
||||||
|
void store_mov(const TRectype& mov);
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
bool TDouble_fatt::create()
|
||||||
|
{
|
||||||
|
_mask = new TDouble_fatt_mask;
|
||||||
|
_form = new TDouble_fatt_form();
|
||||||
|
|
||||||
|
|
||||||
|
return TSkeleton_application::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDouble_fatt::destroy()
|
||||||
|
{
|
||||||
|
delete _mask;
|
||||||
|
delete _form;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mettere in libreria al piu' presto!!!!
|
||||||
|
typedef bool (*SCAN_FUNC)(const TRelation& rel, void* pJolly);
|
||||||
|
|
||||||
|
bool scan_cursor(TCursor& cur, const char* msg, SCAN_FUNC func, void* pJolly)
|
||||||
|
{
|
||||||
|
TRecnotype items = 0; // Temporarily
|
||||||
|
TProgind pi(items, msg, true, true);
|
||||||
|
|
||||||
|
{
|
||||||
|
TWait_cursor hourglass;
|
||||||
|
items = cur.items();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ok = true;
|
||||||
|
if (items > 0)
|
||||||
|
{
|
||||||
|
cur.freeze();
|
||||||
|
pi.setmax(items);
|
||||||
|
for (cur = 0; cur.pos() < items; ++cur)
|
||||||
|
{
|
||||||
|
pi.addstatus(1);
|
||||||
|
if (pi.iscancelled())
|
||||||
|
{
|
||||||
|
ok = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (!func(*cur.relation(), pJolly))
|
||||||
|
{
|
||||||
|
ok = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cur.freeze(false);
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDouble_fatt::store_mov(const TRectype& mov)
|
||||||
|
{
|
||||||
|
TString key;
|
||||||
|
key << mov.get(MOV_CODCF) << '_' << mov.get_date(MOV_DATADOC).year() << '_' << mov.get(MOV_NUMDOC);
|
||||||
|
const long numreg = mov.get_long(MOV_NUMREG);
|
||||||
|
|
||||||
|
TPointer_array* pa = (TPointer_array*)_movimenti.objptr(key); //elemento dell' assocarray
|
||||||
|
|
||||||
|
if (pa == NULL) //se non c'e' il valore lo aggiungo all'assocarray
|
||||||
|
{
|
||||||
|
pa = new TPointer_array;
|
||||||
|
_movimenti.add(key,pa);
|
||||||
|
}
|
||||||
|
pa->add_long(numreg);
|
||||||
|
if (pa->items() > 1)
|
||||||
|
_duplicati.add(pa);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool TDouble_fatt::mov_callback(const TRelation& rel, void* pJolly)
|
||||||
|
{
|
||||||
|
TDouble_fatt* app = (TDouble_fatt*)pJolly;
|
||||||
|
|
||||||
|
app -> store_mov(rel.curr());
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TDouble_fatt::main_loop()
|
||||||
|
{
|
||||||
|
TDate d(TODAY);
|
||||||
|
_mask->set(F_ADATA, d);
|
||||||
|
d.set_day(1); d.set_month(1);
|
||||||
|
_mask->set(F_DADATA, d);
|
||||||
|
|
||||||
|
while (_mask->run() == K_ENTER)
|
||||||
|
{
|
||||||
|
TRelation rel(LF_MOV);
|
||||||
|
|
||||||
|
TRectype darec(LF_MOV), arec(LF_MOV);
|
||||||
|
const TDate dataini(1,1,_mask->get_date(F_DADATA).year()-1);
|
||||||
|
const TDate datafin(31,12,_mask->get_date(F_ADATA).year()+1);
|
||||||
|
|
||||||
|
darec.put(MOV_DATAREG, dataini);
|
||||||
|
arec.put(MOV_DATAREG, datafin);
|
||||||
|
|
||||||
|
TCursor cur(&rel, "TIPO=='F'", 2, &darec, &arec);
|
||||||
|
_movimenti.destroy();
|
||||||
|
scan_cursor(cur, "Ricerca fatture doppie...", mov_callback, this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int cg3800(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TDouble_fatt a;
|
||||||
|
a.run(argc,argv,TR("Stampa lista fatture doppie"));
|
||||||
|
return 0;
|
||||||
|
}
|
7
cg/cg3800.h
Executable file
7
cg/cg3800.h
Executable file
@ -0,0 +1,7 @@
|
|||||||
|
// campi del form cg3800a.frm
|
||||||
|
|
||||||
|
#define FR_DADATA 11
|
||||||
|
#define FR_ADATA 12
|
||||||
|
|
||||||
|
|
||||||
|
|
159
cg/cg3800a.frm
Executable file
159
cg/cg3800a.frm
Executable file
@ -0,0 +1,159 @@
|
|||||||
|
#include "cg3800.h"
|
||||||
|
|
||||||
|
SECTION GRAPHICS ODD
|
||||||
|
|
||||||
|
LINEA -1 132 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 5 "@b"
|
||||||
|
END
|
||||||
|
|
||||||
|
LINEA -1 132 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 7 "@b"
|
||||||
|
END
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
// intestazione generale stampa pagato per commessa
|
||||||
|
SECTION HEADER ODD 7
|
||||||
|
|
||||||
|
NUMERO -1
|
||||||
|
BEGIN
|
||||||
|
KEY "Nr. pagina"
|
||||||
|
PROMPT 1 1 "Pag. "
|
||||||
|
MESSAGE _PAGENO
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA -1
|
||||||
|
BEGIN
|
||||||
|
KEY "Data"
|
||||||
|
PROMPT 115 1 "Data "
|
||||||
|
MESSAGE _TODAY
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA -1
|
||||||
|
BEGIN
|
||||||
|
KEY "Intestazione stampa"
|
||||||
|
PROMPT 56 2 "@bLISTA FATTURE DOPPIE"
|
||||||
|
END
|
||||||
|
|
||||||
|
DATA FR_DADATA
|
||||||
|
BEGIN
|
||||||
|
KEY "Parametri stampa: data iniziale"
|
||||||
|
PROMPT 1 3 "@bMovimenti dal "
|
||||||
|
END
|
||||||
|
|
||||||
|
DATA FR_ADATA
|
||||||
|
BEGIN
|
||||||
|
KEY "Parametri stampa: data finale"
|
||||||
|
PROMPT 40 3 "al "
|
||||||
|
END
|
||||||
|
|
||||||
|
LINEA -1 132 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 4 "B"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA -1
|
||||||
|
BEGIN
|
||||||
|
KEY "anno documento"
|
||||||
|
PROMPT 1 5 "@bANNO"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA -1
|
||||||
|
BEGIN
|
||||||
|
KEY "numero documento"
|
||||||
|
PROMPT 6 5 "@bNUM. DOC. "
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING -1
|
||||||
|
BEGIN
|
||||||
|
KEY "codice fornitore"
|
||||||
|
PROMPT 18 5 "@bFORNITORE"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING -1
|
||||||
|
BEGIN
|
||||||
|
KEY "ragione sociale"
|
||||||
|
PROMPT 28 5 "@bRAGIONE SOCIALE"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING -1
|
||||||
|
BEGIN
|
||||||
|
KEY "numero registrazione"
|
||||||
|
PROMPT 6 6 "@bNum.Reg."
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING -1
|
||||||
|
BEGIN
|
||||||
|
KEY "data registrazione"
|
||||||
|
PROMPT 15 6 "@bData Reg."
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING -1
|
||||||
|
BEGIN
|
||||||
|
KEY "descrizione registrazione"
|
||||||
|
PROMPT 26 6 "@bDescrizione"
|
||||||
|
END
|
||||||
|
|
||||||
|
LINEA -1 132 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 7 "B"
|
||||||
|
END
|
||||||
|
|
||||||
|
END // section header odd
|
||||||
|
|
||||||
|
// riga di stampa (utilizzata per ogni movimento)
|
||||||
|
SECTION BODY ODD 1
|
||||||
|
|
||||||
|
NUMERO FR_ANNODOC 4
|
||||||
|
BEGIN
|
||||||
|
KEY "anno doc"
|
||||||
|
PROMPT
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA FR_NDOC 7
|
||||||
|
BEGIN
|
||||||
|
KEY "num doc"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMERO FR_CODCF 6
|
||||||
|
BEGIN
|
||||||
|
KEY "codice clifo"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA FR_RAGSOC 50
|
||||||
|
BEGIN
|
||||||
|
KEY "ragsoc"
|
||||||
|
END
|
||||||
|
|
||||||
|
SECTION REGISTRAZIONI 2 1 1 FILE LF_MOV GROUP LF_MOV->
|
||||||
|
|
||||||
|
NUMERO FR_NUMREG
|
||||||
|
BEGIN
|
||||||
|
KEY "numero registrazione"
|
||||||
|
PROMPT ""
|
||||||
|
END
|
||||||
|
|
||||||
|
DATA FR_DATAREG
|
||||||
|
BEGIN
|
||||||
|
KEY "data registrazione"
|
||||||
|
PROMPT ""
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA FR_DESCREG 50
|
||||||
|
BEGIN
|
||||||
|
KEY "descrizione registrazione"
|
||||||
|
PROMPT ""
|
||||||
|
END
|
||||||
|
|
||||||
|
END //end section registrazioni
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
END // section body odd
|
||||||
|
|
||||||
|
SECTION FOOTER ODD 1
|
||||||
|
END
|
||||||
|
|
||||||
|
END // form
|
6
cg/cg3800a.h
Executable file
6
cg/cg3800a.h
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
#define F_CODDITTA 101
|
||||||
|
#define F_RAGSOC 102
|
||||||
|
#define F_DADATA 103
|
||||||
|
#define F_ADATA 104
|
||||||
|
|
||||||
|
|
51
cg/cg3800a.uml
Executable file
51
cg/cg3800a.uml
Executable file
@ -0,0 +1,51 @@
|
|||||||
|
#include "cg3800a.h"
|
||||||
|
|
||||||
|
PAGE "Stampa lista fatture doppie" -1 -1 64 8
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 62 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 0 "@bDitta"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CODDITTA 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 1 "Codice "
|
||||||
|
FLAGS "DFR"
|
||||||
|
USE LF_NDITTE
|
||||||
|
INPUT CODDITTA F_CODDITTA
|
||||||
|
OUTPUT F_RAGSOC RAGSOC
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_RAGSOC 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 2 "Rag.Soc. "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_DADATA
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 4 "Dal "
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_ADATA
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 5 "Al "
|
||||||
|
VALIDATE DATE_CMP_FUNC >= F_DADATA
|
||||||
|
WARNING "Data finale non valida"
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_PRINT 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 -1 ""
|
||||||
|
MESSAGE EXIT,K_ENTER
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_QUIT 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
ENDMASK
|
Loading…
x
Reference in New Issue
Block a user