Patch level :10.0
Files correlati : Ricompilazione Demo : [ ] Commento : stampa assurda per SMaryOfAngels fine fase 1 (scritta senza report, mai provata) git-svn-id: svn://10.65.10.50/trunk@19742 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
94dd8c8234
commit
6f60b2a026
@ -11,6 +11,7 @@ int main(int argc, char** argv)
|
|||||||
case 4: ca1500(argc,argv); break; // stampa centri di costo
|
case 4: ca1500(argc,argv); break; // stampa centri di costo
|
||||||
case 5: ca1600(argc,argv); break; // stampa commesse
|
case 5: ca1600(argc,argv); break; // stampa commesse
|
||||||
case 6: ca1700(argc,argv); break; // stampa fasi
|
case 6: ca1700(argc,argv); break; // stampa fasi
|
||||||
|
case 7: ca1800(argc,argv); break; // stampa movimenti raggruppati per conto cms (antico prg cm0100)
|
||||||
default: ca1100(argc,argv); break; // stampa tabelle
|
default: ca1100(argc,argv); break; // stampa tabelle
|
||||||
}
|
}
|
||||||
exit(0);
|
exit(0);
|
||||||
|
1
ca/ca1.h
1
ca/ca1.h
@ -6,5 +6,6 @@ int ca1400(int argc, char* argv[]);
|
|||||||
int ca1500(int argc, char* argv[]);
|
int ca1500(int argc, char* argv[]);
|
||||||
int ca1600(int argc, char* argv[]);
|
int ca1600(int argc, char* argv[]);
|
||||||
int ca1700(int argc, char* argv[]);
|
int ca1700(int argc, char* argv[]);
|
||||||
|
int ca1800(int argc, char* argv[]);
|
||||||
|
|
||||||
#endif // __CA1_H
|
#endif // __CA1_H
|
||||||
|
352
ca/ca1800.cpp
Executable file
352
ca/ca1800.cpp
Executable file
@ -0,0 +1,352 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <automask.h>
|
||||||
|
#include <defmask.h>
|
||||||
|
#include <progind.h>
|
||||||
|
#include <recset.h>
|
||||||
|
#include <reprint.h>
|
||||||
|
#include <textset.h>
|
||||||
|
#include <utility.h>
|
||||||
|
|
||||||
|
#include "rmovana.h"
|
||||||
|
#include "calib02.h"
|
||||||
|
#include "ca1800a.h"
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////
|
||||||
|
// MASCHERA
|
||||||
|
////////////////////////////////////////////////////////
|
||||||
|
class TPrint_contixcms_mask : public TAutomask
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
public:
|
||||||
|
TPrint_contixcms_mask();
|
||||||
|
};
|
||||||
|
|
||||||
|
TPrint_contixcms_mask::TPrint_contixcms_mask() : TAutomask("ca1800a")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TPrint_contixcms_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
switch(o.dlg())
|
||||||
|
{
|
||||||
|
case DLG_PRINT:
|
||||||
|
if (e == fe_button)
|
||||||
|
{
|
||||||
|
main_app().print();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DLG_PREVIEW:
|
||||||
|
if (e == fe_button)
|
||||||
|
{
|
||||||
|
main_app().preview();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////
|
||||||
|
// REPORT
|
||||||
|
////////////////////////////////////////////////////////
|
||||||
|
class TPrint_contixcms_report : public TReport
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
//virtual bool use_mask() { return false; } //questo ci vuole quando la maschera ha un nome != dai report
|
||||||
|
public:
|
||||||
|
TPrint_contixcms_report() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////
|
||||||
|
// RECORDSET
|
||||||
|
////////////////////////////////////////////////////////
|
||||||
|
class TPrint_contixcms_recordset : public TAS400_recordset
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
long trova_riga(const TToken_string& key);
|
||||||
|
|
||||||
|
public:
|
||||||
|
bool aggiungi_riga(TISAM_recordset& recset);
|
||||||
|
TPrint_contixcms_recordset();
|
||||||
|
};
|
||||||
|
|
||||||
|
TPrint_contixcms_recordset::TPrint_contixcms_recordset()
|
||||||
|
: TAS400_recordset("AS400(80)")
|
||||||
|
{
|
||||||
|
create_field(RMOVANA_CODCMS, -1, 20, _alfafld, true);
|
||||||
|
create_field(RMOVANA_CODFASE, -1, 10, _alfafld, false);
|
||||||
|
create_field(RMOVANA_CODCONTO, -1, 12, _alfafld, true);
|
||||||
|
create_field("INDBIL", -1, 1, _intfld, true);
|
||||||
|
create_field(RMOVANA_DATACOMP, -1, 8, _datefld, true);
|
||||||
|
create_field(RMOVANA_IMPORTO, -1, 18, _realfld, true);
|
||||||
|
create_field(RMOVANA_SEZIONE, -1, 1, _alfafld, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
//cerca se una riga con chiave key esiste già
|
||||||
|
long TPrint_contixcms_recordset::trova_riga(const TToken_string& key)
|
||||||
|
{
|
||||||
|
long first = 0;
|
||||||
|
long last = items() - 1;
|
||||||
|
long riga = -1;
|
||||||
|
|
||||||
|
while(first <= last)
|
||||||
|
{
|
||||||
|
const long guess = (first + last) / 2;
|
||||||
|
move_to(guess);
|
||||||
|
|
||||||
|
TToken_string guess_key;
|
||||||
|
guess_key.add(get(RMOVANA_CODCMS).as_string()); //commessa
|
||||||
|
guess_key.add(get(RMOVANA_CODCONTO).as_string()); //conto
|
||||||
|
|
||||||
|
const int diff = guess_key.compare(key);
|
||||||
|
if (diff == 0)
|
||||||
|
{
|
||||||
|
riga = guess;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (diff > 0)
|
||||||
|
{
|
||||||
|
last = guess - 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
first = guess + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return riga;
|
||||||
|
}
|
||||||
|
|
||||||
|
//funzione di ordinamento per il campo codcms/codconto
|
||||||
|
//sono 2 stringhe
|
||||||
|
static int compare_cms_conto(const TObject** o1, const TObject** o2)
|
||||||
|
{
|
||||||
|
TString& s1 = *(TString*)*o1;
|
||||||
|
TString& s2 = *(TString*)*o2;
|
||||||
|
|
||||||
|
const TString& cms1 = s1.left(20);
|
||||||
|
const TString& cms2 = s2.left(20);
|
||||||
|
|
||||||
|
int cmp = cms1.compare(cms2);
|
||||||
|
|
||||||
|
if (cmp == 0)
|
||||||
|
{
|
||||||
|
const TString& cnt1 = s1.mid(30, 12);
|
||||||
|
const TString& cnt2 = s2.mid(30, 12);
|
||||||
|
|
||||||
|
cmp = cnt1.compare(cnt2);
|
||||||
|
}
|
||||||
|
|
||||||
|
return cmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
//metodo per aggiungere righe al recordset da stampare
|
||||||
|
bool TPrint_contixcms_recordset::aggiungi_riga(TISAM_recordset& recset)
|
||||||
|
{
|
||||||
|
//raccatta i dati che servono alla riga da stampare prendendoli dal record corrente del..
|
||||||
|
//..recordset in esame riempito dalla query iniziale
|
||||||
|
const TString& codcms = recset.get(RMOVANA_CODCMS).as_string();
|
||||||
|
const TString& codfase = recset.get(RMOVANA_CODFASE).as_string();
|
||||||
|
const TString& codconto = recset.get(RMOVANA_CODCONTO).as_string();
|
||||||
|
TAnal_bill zio(codconto);
|
||||||
|
const TIndbil ib = zio.indicatore_bilancio();
|
||||||
|
const TDate& datacomp = recset.get(RMOVANA_DATACOMP).as_date();
|
||||||
|
const real curr_valore = recset.get(RMOVANA_IMPORTO).as_real();
|
||||||
|
const char curr_sezione = recset.get(RMOVANA_SEZIONE).as_string()[0];
|
||||||
|
TImporto curr_imp(curr_sezione, curr_valore); //importo riga correntemente in esame
|
||||||
|
|
||||||
|
//chiave della riga (solo su commessa e conto!; la fase è solo un filtro in input)
|
||||||
|
TToken_string key;
|
||||||
|
key.add(codcms);
|
||||||
|
key.add(codconto);
|
||||||
|
|
||||||
|
//cerca se per caso la riga non esista già con questa chiave
|
||||||
|
long numriga = trova_riga(key);
|
||||||
|
|
||||||
|
//se la riga con la chiave key non esiste nel printrecordset la aggiunge
|
||||||
|
if (numriga < 0)
|
||||||
|
{
|
||||||
|
new_rec("");
|
||||||
|
set(RMOVANA_CODCMS, TVariant(codcms));
|
||||||
|
set(RMOVANA_CODFASE, TVariant(codfase));
|
||||||
|
set(RMOVANA_CODCONTO, TVariant(codconto));
|
||||||
|
set("INDBIL", TVariant(long(ib)));
|
||||||
|
set(RMOVANA_DATACOMP, TVariant(datacomp));
|
||||||
|
|
||||||
|
//deve ordinare il recordset
|
||||||
|
sort(compare_cms_conto);
|
||||||
|
|
||||||
|
//dopo che la riga è stata aggiunta riesegue la trova_riga in modo da ottenere il numero di riga
|
||||||
|
numriga = trova_riga(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
//importo riga con indice numriga
|
||||||
|
const char tot_sezione = get(RMOVANA_SEZIONE).as_string()[0];
|
||||||
|
const real tot_valore = get(RMOVANA_IMPORTO).as_real();
|
||||||
|
TImporto tot_imp(tot_sezione, tot_valore);
|
||||||
|
|
||||||
|
//aggiunge l'importo alla riga (nuova o vecchia)
|
||||||
|
tot_imp += curr_imp;
|
||||||
|
|
||||||
|
//normalizza e risalva il valore aggiornato sulla riga
|
||||||
|
tot_imp.normalize();
|
||||||
|
TString4 str_sez;
|
||||||
|
str_sez << tot_imp.sezione();
|
||||||
|
set(RMOVANA_SEZIONE, str_sez);
|
||||||
|
set(RMOVANA_IMPORTO, tot_imp.valore());
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////
|
||||||
|
// APPLICAZIONE
|
||||||
|
////////////////////////////////////////////////////////
|
||||||
|
class TPrint_contixcms : public TSkeleton_application
|
||||||
|
{
|
||||||
|
TPrint_contixcms_mask* _mask;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual const char * extra_modules() const {return "cm";} //funziona anche con autorizzazione CM
|
||||||
|
|
||||||
|
virtual bool create();
|
||||||
|
virtual void print();
|
||||||
|
virtual void preview();
|
||||||
|
virtual void print_or_preview(const bool stampa);
|
||||||
|
|
||||||
|
TPrint_contixcms_recordset* elabora() const;
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual void main_loop();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//metodo di alto livello per la gestione dell'elaborazione
|
||||||
|
TPrint_contixcms_recordset* TPrint_contixcms::elabora() const
|
||||||
|
{
|
||||||
|
//creazione dell'as400 recordset che verra' riempito dai record del recordset righe
|
||||||
|
TPrint_contixcms_recordset* printset = new TPrint_contixcms_recordset();
|
||||||
|
|
||||||
|
//creazione della query per la creazione del recordset
|
||||||
|
TString query;
|
||||||
|
query << "USE RMOVANA KEY 3\n";
|
||||||
|
query << "SELECT (BETWEEN(CODCMS,#DACODCMS,#ACODCMS))&&(BETWEEN(CODFASE,#DACODFASE,#ACODFASE))&&(BETWEEN(CODCONTO,#DACODCONTO,#ACODCONTO))\n";
|
||||||
|
//query << "JOIN MOVANA INTO NUMREG==NUMREG\n";
|
||||||
|
//query << "JOIN PCON INTO GRUPPO=CODCONTO[1,3] CONTO=CODCONTO[4,6] SOTTOCONTO=CODCONTO[7,12]\n";
|
||||||
|
query << "FROM DATACOMP=#DADATA\n";
|
||||||
|
query << "TO DATACOMP=#ADATA";
|
||||||
|
|
||||||
|
TISAM_recordset recset(query);
|
||||||
|
|
||||||
|
recset.set_var("#DACODCMS", TVariant(_mask->get(F_DACODCMS)));
|
||||||
|
recset.set_var("#ACODCMS", TVariant(_mask->get(F_ACODCMS)));
|
||||||
|
recset.set_var("#DACODFASE", TVariant(_mask->get(F_DACODFASE)));
|
||||||
|
recset.set_var("#ACODFASE", TVariant(_mask->get(F_ACODFASE)));
|
||||||
|
|
||||||
|
//per il conto va gestito il fatto che il conto è contabile e non analitico ed è 0-filled
|
||||||
|
TString contone;
|
||||||
|
|
||||||
|
int gruppo = _mask->get_int(F_GRUPPOINI);
|
||||||
|
int conto = _mask->get_int(F_CONTOINI);
|
||||||
|
long sottoconto = _mask->get_long(F_SOTTOCINI);
|
||||||
|
contone.format("%03d%03d%06ld", gruppo, conto, sottoconto);
|
||||||
|
recset.set_var("#DACODCONTO", contone);
|
||||||
|
|
||||||
|
gruppo = _mask->get_int(F_GRUPPOFIN);
|
||||||
|
conto = _mask->get_int(F_CONTOFIN);
|
||||||
|
sottoconto = _mask->get_long(F_SOTTOCFIN);
|
||||||
|
contone.format("%03d%03d%06ld", gruppo, conto, sottoconto);
|
||||||
|
recset.set_var("#ACODCONTO", contone);
|
||||||
|
|
||||||
|
//e alla fine le decisivissime date (che sono l'intervallo di scelta più importante)
|
||||||
|
recset.set_var("#DADATA", _mask->get_date(F_DATAINI));
|
||||||
|
recset.set_var("#ADATA", _mask->get_date(F_DATAFIN));
|
||||||
|
|
||||||
|
//se ci sono record che soddisfano le pesanti richieste dell'utonto...
|
||||||
|
const long recset_items = recset.items();
|
||||||
|
if (recset_items > 0)
|
||||||
|
{
|
||||||
|
//E crea pure la progind..
|
||||||
|
TProgind pi(recset_items, TR("Elaborazione dati per la stampa..."), true, true);
|
||||||
|
|
||||||
|
//Scansione del recordset trovato
|
||||||
|
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||||
|
{
|
||||||
|
if (!pi.addstatus(1))
|
||||||
|
break;
|
||||||
|
//scrive sul CSV i campi che servono al report
|
||||||
|
printset->aggiungi_riga(recset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return printset;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//fantastico metodo per gestire stampa o anteprima
|
||||||
|
void TPrint_contixcms::print_or_preview(const bool stampa)
|
||||||
|
{
|
||||||
|
if (_mask->check_fields())
|
||||||
|
{
|
||||||
|
//l'utonto può scegliere che report usare (personalizzato!)
|
||||||
|
TString rep_name = _mask->get(F_REPORT);
|
||||||
|
//se il rep non è selezionato usa quello standard
|
||||||
|
if (rep_name.empty())
|
||||||
|
rep_name << "ca1800a.rep";
|
||||||
|
|
||||||
|
TPrint_contixcms_report rep;
|
||||||
|
rep.load(rep_name);
|
||||||
|
|
||||||
|
rep.mask2report(*_mask); //setta i valori della maschera sul report
|
||||||
|
|
||||||
|
//metodo per la generazione del recordset che contiene tutti i dati da stampare
|
||||||
|
//insomma, il vero programma!
|
||||||
|
TPrint_contixcms_recordset* printset = elabora();
|
||||||
|
|
||||||
|
//appioppa il recordset al report
|
||||||
|
rep.set_recordset(printset);
|
||||||
|
|
||||||
|
TReport_book book;
|
||||||
|
book.add(rep);
|
||||||
|
if (stampa)
|
||||||
|
book.print();
|
||||||
|
else
|
||||||
|
book.preview();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TPrint_contixcms::print()
|
||||||
|
{
|
||||||
|
print_or_preview(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TPrint_contixcms::preview()
|
||||||
|
{
|
||||||
|
print_or_preview(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TPrint_contixcms::main_loop()
|
||||||
|
{
|
||||||
|
_mask = new TPrint_contixcms_mask;
|
||||||
|
_mask->run();
|
||||||
|
delete _mask;
|
||||||
|
_mask = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TPrint_contixcms::create()
|
||||||
|
{
|
||||||
|
return TSkeleton_application::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
int ca1800(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TPrint_contixcms a;
|
||||||
|
a.run(argc, argv, TR("Stampa saldi conti per commessa"));
|
||||||
|
return 0;
|
||||||
|
}
|
26
ca/ca1800a.h
Executable file
26
ca/ca1800a.h
Executable file
@ -0,0 +1,26 @@
|
|||||||
|
// campi per la maschera ca1800a
|
||||||
|
|
||||||
|
#define F_CODDITTA 101
|
||||||
|
#define F_RAGSOC 102
|
||||||
|
#define F_ANNO 103
|
||||||
|
#define F_DATAINI 104
|
||||||
|
#define F_DATAFIN 105
|
||||||
|
#define F_DACODCMS 106
|
||||||
|
#define F_ACODCMS 107
|
||||||
|
#define F_DACODFASE 108
|
||||||
|
#define F_ACODFASE 109
|
||||||
|
#define F_GRUPPOINI 110
|
||||||
|
#define F_CONTOINI 111
|
||||||
|
#define F_SOTTOCINI 112
|
||||||
|
#define F_DESCRINI 113
|
||||||
|
#define F_GRUPPOFIN 114
|
||||||
|
#define F_CONTOFIN 115
|
||||||
|
#define F_SOTTOCFIN 116
|
||||||
|
#define F_DESCRFIN 117
|
||||||
|
|
||||||
|
#define F_DETTAGLI 120
|
||||||
|
#define F_TOTCONTI 121
|
||||||
|
#define F_TOTCMS 122
|
||||||
|
|
||||||
|
#define F_REPORT 123
|
||||||
|
|
14
ca/ca1800a.rep
Executable file
14
ca/ca1800a.rep
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<report name="ca1800a" orientation="2" lpi="6">
|
||||||
|
<font face="Arial" size="8" />
|
||||||
|
<section type="Head" />
|
||||||
|
<section type="Head" level="1" />
|
||||||
|
<section type="Body" />
|
||||||
|
<section type="Body" level="1">
|
||||||
|
<field x="1" type="Stringa" width="20" pattern="1">
|
||||||
|
<source>CODCONTO</source>
|
||||||
|
</field>
|
||||||
|
</section>
|
||||||
|
<section type="Foot" />
|
||||||
|
<section type="Foot" level="1" />
|
||||||
|
</report>
|
269
ca/ca1800a.uml
Executable file
269
ca/ca1800a.uml
Executable file
@ -0,0 +1,269 @@
|
|||||||
|
#include "ca1800a.h"
|
||||||
|
|
||||||
|
TOOLBAR "topbar" 0 0 0 2
|
||||||
|
|
||||||
|
BUTTON DLG_PREVIEW 2 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "~Anteprima"
|
||||||
|
PICTURE TOOL_PREVIEW
|
||||||
|
END
|
||||||
|
|
||||||
|
#include <printbar.h>
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Conti per CDC/Commessa" 0 2 0 0
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 79 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 0 "@bDitta"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CODDITTA 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 1 "Codice "
|
||||||
|
FLAGS "DF"
|
||||||
|
USE LF_NDITTE
|
||||||
|
INPUT CODDITTA F_CODDITTA
|
||||||
|
DISPLAY "Codice" CODDITTA
|
||||||
|
DISPLAY "Ragione sociale@50" RAGSOC
|
||||||
|
OUTPUT F_RAGSOC RAGSOC
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_RAGSOC 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 17 1 "Rag. Soc. "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 79 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 3 "@bPeriodo"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_ANNO 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 4 "Codice esercizio "
|
||||||
|
HELP "Codice esercizio per cui si vuole la lista"
|
||||||
|
USE ESC
|
||||||
|
INPUT CODTAB F_ANNO
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Data inizio esercizio" D0
|
||||||
|
DISPLAY "Data fine esercizio" D1
|
||||||
|
OUTPUT F_ANNO CODTAB
|
||||||
|
FLAGS "RZ"
|
||||||
|
ADD RUN cg0 -5 esc
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
WARNING "Codice esercizio assente"
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_DATAINI
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 5 "Dalla data "
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_DATAFIN
|
||||||
|
BEGIN
|
||||||
|
PROMPT 50 5 "alla data "
|
||||||
|
VALIDATE DATE_CMP_FUNC >= F_DATAINI
|
||||||
|
WARNING "La data finale deve essere succeviva a quella iniziale"
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 79 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 7 "@bSelezione commesse"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DACODCMS 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 8 "Da Commessa "
|
||||||
|
FLAGS "UZ"
|
||||||
|
USE COMMESSE
|
||||||
|
INPUT CODCMS F_DACODCMS
|
||||||
|
DISPLAY "Codice@20" CODCMS
|
||||||
|
DISPLAY "Descrizione@50" DESCRIZ
|
||||||
|
OUTPUT F_DACODCMS CODCMS
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DACODFASE 10
|
||||||
|
BEGIN
|
||||||
|
PROMPT 50 8 "Da fase "
|
||||||
|
FLAGS "UZ"
|
||||||
|
USE FASI
|
||||||
|
INPUT CODFASE F_DACODFASE
|
||||||
|
DISPLAY "Codice@20" CODFASE
|
||||||
|
DISPLAY "Descrizione@50" DESCRIZ
|
||||||
|
OUTPUT F_DACODFASE CODFASE
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_ACODCMS 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 9 "A Commessa "
|
||||||
|
FLAGS "UZ"
|
||||||
|
COPY USE F_DACODCMS
|
||||||
|
INPUT CODCMS F_ACODCMS
|
||||||
|
COPY DISPLAY F_DACODCMS
|
||||||
|
OUTPUT F_ACODCMS CODCMS
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_ACODFASE 10
|
||||||
|
BEGIN
|
||||||
|
PROMPT 50 9 "A fase "
|
||||||
|
FLAGS "UZ"
|
||||||
|
COPY USE F_DACODFASE
|
||||||
|
INPUT CODFASE F_ACODFASE
|
||||||
|
COPY DISPLAY F_DACODFASE
|
||||||
|
OUTPUT F_ACODFASE CODFASE
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 79 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 12 "@bSelezione conti"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_GRUPPOINI 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 13 "Da Gruppo - Conto - Sottoconto "
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CONTOINI 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 39 13 ""
|
||||||
|
USE LF_PCON SELECT (CONTO!="")&&(SOTTOCONTO="")
|
||||||
|
INPUT GRUPPO F_GRUPPOINI
|
||||||
|
INPUT CONTO F_CONTOINI
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Tipo" TMCF
|
||||||
|
OUTPUT F_GRUPPOINI GRUPPO
|
||||||
|
OUTPUT F_CONTOINI CONTO
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
WARNING "Conto inesistente o mancante"
|
||||||
|
VALIDATE REQIF_FUNC 1 F_SOTTOCINI
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_SOTTOCINI 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 46 13 ""
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT GRUPPO F_GRUPPOINI
|
||||||
|
INPUT CONTO F_CONTOINI
|
||||||
|
INPUT SOTTOCONTO F_SOTTOCINI
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_GRUPPOINI GRUPPO
|
||||||
|
OUTPUT F_CONTOINI CONTO
|
||||||
|
OUTPUT F_SOTTOCINI SOTTOCONTO
|
||||||
|
OUTPUT F_DESCRINI DESCR
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESCRINI 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 14 "Descrizione "
|
||||||
|
USE LF_PCON KEY 2
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
INPUT DESCR F_DESCRINI
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
COPY OUTPUT F_SOTTOCINI
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_GRUPPOFIN 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 15 "A Gruppo - Conto - Sottoconto "
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CONTOFIN 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 39 15 ""
|
||||||
|
USE LF_PCON SELECT (CONTO!="")&&(SOTTOCONTO="")
|
||||||
|
INPUT GRUPPO F_GRUPPOFIN
|
||||||
|
INPUT CONTO F_CONTOFIN
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Tipo" TMCF
|
||||||
|
OUTPUT F_GRUPPOFIN GRUPPO
|
||||||
|
OUTPUT F_CONTOFIN CONTO
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
VALIDATE REQIF_FUNC 1 F_SOTTOCFIN
|
||||||
|
WARNING "Conto inesistente o mancante"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_SOTTOCFIN 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 46 15 ""
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT GRUPPO F_GRUPPOFIN
|
||||||
|
INPUT CONTO F_CONTOFIN
|
||||||
|
INPUT SOTTOCONTO F_SOTTOCFIN
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_GRUPPOFIN GRUPPO
|
||||||
|
OUTPUT F_CONTOFIN CONTO
|
||||||
|
OUTPUT F_SOTTOCFIN SOTTOCONTO
|
||||||
|
OUTPUT F_DESCRFIN DESCR
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
WARNING "Sottoconto inesistente o mancante"
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESCRFIN 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 16 "Descrizione "
|
||||||
|
USE LF_PCON KEY 2
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
INPUT DESCR F_DESCRFIN
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
COPY OUTPUT F_SOTTOCFIN
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 79 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 18 "@bSelezione elementi da stampare"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_DETTAGLI
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 19 "Dettagli sottoconto"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_TOTCONTI
|
||||||
|
BEGIN
|
||||||
|
PROMPT 31 19 "Totali per conto"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_TOTCMS
|
||||||
|
BEGIN
|
||||||
|
PROMPT 57 19 "Totali per commessa"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_REPORT 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 21 "Report personalizzato "
|
||||||
|
RSELECT ""
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
@ -760,6 +760,11 @@ void TPrint_rendiconto_ca_recordset::scrive_riga(TLocalisamfile& tmp, const TRec
|
|||||||
//---- DOC D'ORIGINE DELL' ANALMOV ----//
|
//---- DOC D'ORIGINE DELL' ANALMOV ----//
|
||||||
//tipo movimento CONSUNTIVO (o TEMPORANEO); per i movimenti di budget (P o V) vedi l'else
|
//tipo movimento CONSUNTIVO (o TEMPORANEO); per i movimenti di budget (P o V) vedi l'else
|
||||||
const char tipomov = movana.get_char(MOVANA_TIPOMOV);
|
const char tipomov = movana.get_char(MOVANA_TIPOMOV);
|
||||||
|
#ifdef DBG
|
||||||
|
const long cazzone_numreg = movana.get_long(MOVANA_NUMREG);
|
||||||
|
if (cazzone_numreg == 23004)
|
||||||
|
const int cazzone = 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
//serve un documento da cui ricavare i parametri di stampa
|
//serve un documento da cui ricavare i parametri di stampa
|
||||||
TDocumento* newdoc = (TDocumento*)doc;
|
TDocumento* newdoc = (TDocumento*)doc;
|
||||||
|
@ -10,7 +10,7 @@ PAGE "Selezione archivi per Utente" 0 0 0 2
|
|||||||
|
|
||||||
STRING F_AUC_CODICE 16
|
STRING F_AUC_CODICE 16
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Utente "
|
PROMPT 2 2 "Utente "
|
||||||
USE %AUC
|
USE %AUC
|
||||||
JOIN LF_USER INTO USERNAME==CODTAB
|
JOIN LF_USER INTO USERNAME==CODTAB
|
||||||
FIELD CODTAB
|
FIELD CODTAB
|
||||||
@ -27,7 +27,7 @@ END
|
|||||||
|
|
||||||
STRING F_AUC_CODICE1 16
|
STRING F_AUC_CODICE1 16
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Utente "
|
PROMPT 2 2 "Utente "
|
||||||
FIELD CODTAB
|
FIELD CODTAB
|
||||||
FLAGS "HG"
|
FLAGS "HG"
|
||||||
KEY 1
|
KEY 1
|
||||||
@ -44,56 +44,71 @@ END
|
|||||||
|
|
||||||
STRING F_AUC_DESCR 50
|
STRING F_AUC_DESCR 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 3 "Nome "
|
PROMPT 2 3 "Nome "
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_AUC_COMMESSE 70 50
|
GROUPBOX DLG_NULL 78 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 4 "Filtro commesse "
|
PROMPT 1 4 "@bFiltri"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_AUC_COMMESSE 70 65
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 5 "Commesse "
|
||||||
FIELD S0
|
FIELD S0
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_AUC_CDC 70 50
|
STRING F_AUC_CDC 70 65
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 5 "Filtro C.D.C "
|
PROMPT 2 6 "C.D.C "
|
||||||
FIELD S1
|
FIELD S1
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_AUC_FASI 70 50
|
STRING F_AUC_FASI 70 65
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 6 "Filtro Fasi "
|
PROMPT 2 7 "Fasi "
|
||||||
FIELD S2
|
FIELD S2
|
||||||
END
|
END
|
||||||
|
|
||||||
TEXT -1
|
TEXT -1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 8 "I campi soprastanti sono di tipo formula. Si usano per indicare Commesse, Fasi,"
|
PROMPT 2 10 "I campi soprastanti sono di tipo formula. Si usano per indicare Commesse, Fasi,"
|
||||||
END
|
END
|
||||||
|
|
||||||
TEXT -1
|
TEXT -1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 9 "e CdC che l'utente selezionato è autorizzato o meno a consultare/modificare."
|
PROMPT 2 11 "e CdC che l'utente selezionato è autorizzato o meno a consultare/modificare."
|
||||||
END
|
END
|
||||||
|
|
||||||
TEXT -1
|
TEXT -1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 10 "Esempi"
|
PROMPT 2 12 "Esempi"
|
||||||
END
|
END
|
||||||
|
|
||||||
TEXT -1
|
TEXT -1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 11 "CODCMS=codicecommessa"
|
PROMPT 2 13 "CODCMS=codicecommessa, CODCMS=cod*"
|
||||||
END
|
END
|
||||||
|
|
||||||
TEXT -1
|
TEXT -1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 12 "CODCOSTO=codicecdc"
|
PROMPT 2 14 "CODCOSTO=codicecdc, CODCOSTO=cod*"
|
||||||
END
|
END
|
||||||
|
|
||||||
TEXT -1
|
TEXT -1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 13 "CODFASE=codicefase"
|
PROMPT 2 15 "CODFASE=codicefase, CODFASE=cod*"
|
||||||
|
END
|
||||||
|
|
||||||
|
TEXT -1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 16 "Nota: il filtro sulle fasi è applicabile solo se le fasi NON sono collegate a"
|
||||||
|
END
|
||||||
|
|
||||||
|
TEXT -1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 17 "commesse e CdC"
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
Loading…
x
Reference in New Issue
Block a user