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 5: ca1600(argc,argv); break; // stampa commesse
|
||||
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
|
||||
}
|
||||
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 ca1600(int argc, char* argv[]);
|
||||
int ca1700(int argc, char* argv[]);
|
||||
int ca1800(int argc, char* argv[]);
|
||||
|
||||
#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 ----//
|
||||
//tipo movimento CONSUNTIVO (o TEMPORANEO); per i movimenti di budget (P o V) vedi l'else
|
||||
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
|
||||
TDocumento* newdoc = (TDocumento*)doc;
|
||||
|
@ -10,7 +10,7 @@ PAGE "Selezione archivi per Utente" 0 0 0 2
|
||||
|
||||
STRING F_AUC_CODICE 16
|
||||
BEGIN
|
||||
PROMPT 2 2 "Utente "
|
||||
PROMPT 2 2 "Utente "
|
||||
USE %AUC
|
||||
JOIN LF_USER INTO USERNAME==CODTAB
|
||||
FIELD CODTAB
|
||||
@ -27,7 +27,7 @@ END
|
||||
|
||||
STRING F_AUC_CODICE1 16
|
||||
BEGIN
|
||||
PROMPT 2 2 "Utente "
|
||||
PROMPT 2 2 "Utente "
|
||||
FIELD CODTAB
|
||||
FLAGS "HG"
|
||||
KEY 1
|
||||
@ -44,58 +44,73 @@ END
|
||||
|
||||
STRING F_AUC_DESCR 50
|
||||
BEGIN
|
||||
PROMPT 2 3 "Nome "
|
||||
PROMPT 2 3 "Nome "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_AUC_COMMESSE 70 50
|
||||
GROUPBOX DLG_NULL 78 5
|
||||
BEGIN
|
||||
PROMPT 2 4 "Filtro commesse "
|
||||
PROMPT 1 4 "@bFiltri"
|
||||
END
|
||||
|
||||
STRING F_AUC_COMMESSE 70 65
|
||||
BEGIN
|
||||
PROMPT 2 5 "Commesse "
|
||||
FIELD S0
|
||||
END
|
||||
|
||||
STRING F_AUC_CDC 70 50
|
||||
STRING F_AUC_CDC 70 65
|
||||
BEGIN
|
||||
PROMPT 2 5 "Filtro C.D.C "
|
||||
PROMPT 2 6 "C.D.C "
|
||||
FIELD S1
|
||||
END
|
||||
|
||||
STRING F_AUC_FASI 70 50
|
||||
STRING F_AUC_FASI 70 65
|
||||
BEGIN
|
||||
PROMPT 2 6 "Filtro Fasi "
|
||||
PROMPT 2 7 "Fasi "
|
||||
FIELD S2
|
||||
END
|
||||
|
||||
TEXT -1
|
||||
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
|
||||
|
||||
TEXT -1
|
||||
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
|
||||
|
||||
TEXT -1
|
||||
BEGIN
|
||||
PROMPT 2 10 "Esempi"
|
||||
PROMPT 2 12 "Esempi"
|
||||
END
|
||||
|
||||
TEXT -1
|
||||
BEGIN
|
||||
PROMPT 2 11 "CODCMS=codicecommessa"
|
||||
PROMPT 2 13 "CODCMS=codicecommessa, CODCMS=cod*"
|
||||
END
|
||||
|
||||
TEXT -1
|
||||
BEGIN
|
||||
PROMPT 2 12 "CODCOSTO=codicecdc"
|
||||
PROMPT 2 14 "CODCOSTO=codicecdc, CODCOSTO=cod*"
|
||||
END
|
||||
|
||||
TEXT -1
|
||||
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
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
Loading…
x
Reference in New Issue
Block a user