Patch level : 10.0 888
Files correlati : ci0.exe ci2.exe Ricompilazione Demo : [ ] Commento : Generazione documenti dalla Rilevazione ore git-svn-id: svn://10.65.10.50/branches/R_10_00@21475 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
38874c34c4
commit
11c1841b9d
@ -167,6 +167,10 @@ void TConfigurazioneIndustriale_app::file_to_sheet()
|
||||
}
|
||||
mask().set(F_DETTDISP, configfile.get("DETTDISP"));
|
||||
mask().set(F_DETTCONS, configfile.get("DETTCONS"));
|
||||
mask().set(F_CODNUMPR, configfile.get("CODNUMPR"));
|
||||
mask().set(F_TIPODOCPR, configfile.get("TIPODOCPR"));
|
||||
mask().set(F_CODNUMCN, configfile.get("CODNUMCN"));
|
||||
mask().set(F_TIPODOCCN, configfile.get("TIPODOCCN"));
|
||||
mask().sheet().force_update();
|
||||
}
|
||||
|
||||
@ -203,6 +207,10 @@ void TConfigurazioneIndustriale_app::sheet_to_file()
|
||||
}
|
||||
configfile.set("DETTDISP", mask().get(F_DETTDISP));
|
||||
configfile.set("DETTCONS", mask().get(F_DETTCONS));
|
||||
configfile.set("CODNUMPR", mask().get(F_CODNUMPR));
|
||||
configfile.set("TIPODOCPR", mask().get(F_TIPODOCPR));
|
||||
configfile.set("CODNUMCN", mask().get(F_CODNUMCN));
|
||||
configfile.set("TIPODOCCN", mask().get(F_TIPODOCCN));
|
||||
|
||||
if (totlen>_maxlen)
|
||||
message_box("E' probabile che la lunghezza delle descrizioni inserite ne impedisca la totale visualizzazione sullo schermo");
|
||||
|
@ -6,6 +6,15 @@
|
||||
#define F_MOVEDN 153
|
||||
#define F_DETTDISP 154
|
||||
#define F_DETTCONS 156
|
||||
#define F_CODNUMPR 157
|
||||
#define F_DESNUMPR 158
|
||||
#define F_TIPODOCPR 159
|
||||
#define F_DESTIPODOCPR 160
|
||||
#define F_CODNUMCN 161
|
||||
#define F_DESNUMCN 162
|
||||
#define F_TIPODOCCN 163
|
||||
#define F_DESTIPODOCCN 164
|
||||
|
||||
|
||||
#define FR_FILTRO 101
|
||||
#define FR_DES 102
|
||||
|
107
ci/ci0300a.uml
107
ci/ci0300a.uml
@ -64,6 +64,113 @@ BEGIN
|
||||
FIELD DETTCONS
|
||||
END
|
||||
|
||||
STRING F_CODNUMPR 4
|
||||
BEGIN
|
||||
PROMPT 2 6 "Num.preventivi "
|
||||
FIELD CODNUMPR
|
||||
HELP "Codice numerazione"
|
||||
USE %NUM
|
||||
INPUT CODTAB F_CODNUMPR
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CODNUMPR CODTAB
|
||||
OUTPUT F_DESNUMPR S0
|
||||
CHECKTYPE NORMAL
|
||||
FLAG "UPA"
|
||||
WARNING "Numerazione assente"
|
||||
KEY 1 2
|
||||
END
|
||||
|
||||
STRING F_DESNUMPR 50
|
||||
BEGIN
|
||||
PROMPT 26 6 ""
|
||||
HELP "Descrizione numerazione"
|
||||
USE %NUM KEY 2
|
||||
INPUT S0 F_DESNUMPR
|
||||
DISPLAY "Descrizione@60" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_CODNUMPR
|
||||
END
|
||||
|
||||
STRING F_TIPODOCPR 4
|
||||
BEGIN
|
||||
PROMPT 2 8 "Tipo preventivi"
|
||||
FIELD TIPODOCPR
|
||||
HELP "Codice tipo documento"
|
||||
USE %TIP
|
||||
INPUT CODTAB F_TIPODOCPR
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOCPR CODTAB
|
||||
OUTPUT F_DESTIPODOCPR S0
|
||||
CHECKTYPE NORMAL
|
||||
FLAG "UP"
|
||||
END
|
||||
|
||||
STRING F_DESTIPODOCPR 50
|
||||
BEGIN
|
||||
PROMPT 26 8 ""
|
||||
HELP "Descrizione tipo documento"
|
||||
USE %TIP KEY 2
|
||||
INPUT S0 F_DESTIPODOCPR
|
||||
DISPLAY "Descrizione@60" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOCPR
|
||||
END
|
||||
|
||||
STRING F_CODNUMCN 4
|
||||
BEGIN
|
||||
PROMPT 2 10 "Num.preventivi "
|
||||
FIELD CODNUMCN
|
||||
HELP "Codice numerazione"
|
||||
USE %NUM
|
||||
INPUT CODTAB F_CODNUMCN
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CODNUMCN CODTAB
|
||||
OUTPUT F_DESNUMCN S0
|
||||
CHECKTYPE NORMAL
|
||||
FLAG "UPA"
|
||||
WARNING "Numerazione assente"
|
||||
KEY 1 2
|
||||
END
|
||||
|
||||
STRING F_DESNUMCN 50
|
||||
BEGIN
|
||||
PROMPT 26 10 ""
|
||||
HELP "Descrizione numerazione"
|
||||
USE %NUM KEY 2
|
||||
INPUT S0 F_DESNUMCN
|
||||
DISPLAY "Descrizione@60" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_CODNUMCN
|
||||
END
|
||||
|
||||
STRING F_TIPODOCCN 4
|
||||
BEGIN
|
||||
PROMPT 2 12 "Tipo consuntivi"
|
||||
FIELD TIPODOCPR
|
||||
HELP "Codice tipo documento"
|
||||
USE %TIP
|
||||
INPUT CODTAB F_TIPODOCCN
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOCCN CODTAB
|
||||
OUTPUT F_DESTIPODOCCN S0
|
||||
CHECKTYPE NORMAL
|
||||
FLAG "UP"
|
||||
END
|
||||
|
||||
STRING F_DESTIPODOCCN 50
|
||||
BEGIN
|
||||
PROMPT 26 12 ""
|
||||
HELP "Descrizione tipo documento"
|
||||
USE %TIP KEY 2
|
||||
INPUT S0 F_DESTIPODOCCN
|
||||
DISPLAY "Descrizione@60" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOCCN
|
||||
END
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
106
ci/ci2100.cpp
106
ci/ci2100.cpp
@ -28,6 +28,8 @@ class TRilevamento_prev_msk : public TAutomask
|
||||
short _scdc_sid, _scdc_lid;
|
||||
short _scms_sid, _scms_lid;
|
||||
short _sfase_sid, _sfase_lid;
|
||||
TString _numpr;
|
||||
TString _tipopr;
|
||||
|
||||
protected:
|
||||
const real proponi_costo(const TMask& msk);
|
||||
@ -553,6 +555,7 @@ void TRilevamento_prev_msk::azzera_tutto(TSheet_field& sheet)
|
||||
//vaoler pari a zero, e poi ricarica lo sheet
|
||||
void TRilevamento_prev_msk::registra()
|
||||
{
|
||||
TDoc_cache ca;
|
||||
TRilevamento_ore rilroa;
|
||||
TSheet_field& sheet = sfield(F_SHEET);
|
||||
int err = NOERR;
|
||||
@ -574,17 +577,32 @@ void TRilevamento_prev_msk::registra()
|
||||
const real costo(tmp);
|
||||
|
||||
get_row_anal_fields(riga, codcosto, codcms, codfase);
|
||||
rilroa.read('P', id);
|
||||
if(qtaore == 0)
|
||||
err = rilroa.remove();
|
||||
const bool found = rilroa.read('P', id) == NOERR;
|
||||
if (qtaore == 0)
|
||||
{
|
||||
if (found)
|
||||
{
|
||||
err = rilroa.remove();
|
||||
if (_numpr.full() && _tipopr.full())
|
||||
{
|
||||
TDocumento & doc = ca.doc(rilroa);
|
||||
const int docrow = doc.id2rownum(rilroa.get_long(RILORE_IDRIGA));
|
||||
|
||||
if (docrow > 0)
|
||||
doc.destroy_row(docrow, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
{
|
||||
const int anno = dadata.year();
|
||||
const int mese = dadata.month();
|
||||
const int giorno = dadata.day();
|
||||
rilroa.put(RILORE_TIPO, "P");
|
||||
rilroa.put(RILORE_ID, id);
|
||||
rilroa.put(RILORE_ANNO, dadata.year());
|
||||
rilroa.put(RILORE_MESE, dadata.month());
|
||||
rilroa.put(RILORE_GIORNO, dadata.day());
|
||||
rilroa.put(RILORE_ANNO, anno);
|
||||
rilroa.put(RILORE_MESE, mese);
|
||||
rilroa.put(RILORE_GIORNO, giorno);
|
||||
rilroa.put(RILORE_TIPORA, tipora);
|
||||
rilroa.put(RILORE_CODICE, codice);
|
||||
rilroa.put(RILORE_TPORA, tpora);
|
||||
@ -595,13 +613,82 @@ void TRilevamento_prev_msk::registra()
|
||||
rilroa.put(RILORE_ADATA, adata);
|
||||
rilroa.put(RILORE_QTAORE, qtaore);
|
||||
rilroa.put(RILORE_COSTO, costo);
|
||||
err = rilroa.rewrite_write();
|
||||
if (_numpr.full() && _tipopr.full())
|
||||
{
|
||||
TDoc_key oldkey(rilroa);
|
||||
const long ndoc = date2ndoc(dadata) * 10000L + (adata.year() - dadata.year()) * 1000L+ date2ndoc(adata);
|
||||
|
||||
if (oldkey.provv() != 'D')
|
||||
{
|
||||
oldkey.set_provv();
|
||||
oldkey.set_anno(anno);
|
||||
oldkey.set_codnum(_numpr);
|
||||
oldkey.set_ndoc(ndoc);
|
||||
}
|
||||
|
||||
TDocumento & olddoc = ca.doc(oldkey);
|
||||
|
||||
int docrow = olddoc.id2rownum(rilroa.get_long(RILORE_IDRIGA));
|
||||
TDoc_key key(olddoc);
|
||||
|
||||
if (found && (key.anno() != anno || ndoc != olddoc.get_long(DOC_NDOC)))
|
||||
{
|
||||
if (docrow > 0)
|
||||
olddoc.destroy_row(docrow, true);
|
||||
docrow = -1;
|
||||
key.set_ndoc(ndoc);
|
||||
}
|
||||
|
||||
TDocumento & doc = ca.doc(key);
|
||||
|
||||
doc.set_tipo(_tipopr);
|
||||
doc.put(DOC_DATADOC, dadata);
|
||||
doc.put(DOC_DATACOMP, dadata);
|
||||
doc.put(DOC_DATAFCOMP, adata);
|
||||
|
||||
TSpesa_prest risatt(codice, tipora);
|
||||
|
||||
if (docrow < 0)
|
||||
{
|
||||
doc.new_row(risatt.tipo_riga());
|
||||
docrow = doc.physical_rows();
|
||||
doc.set_row_ids();
|
||||
}
|
||||
TRiga_documento & rdoc = doc[docrow];
|
||||
rdoc.put(RDOC_TIPORIGA, risatt.tipo_riga());
|
||||
rdoc.put(RDOC_CODART, codice);
|
||||
rdoc.put(RDOC_CHECKED, "X");
|
||||
rdoc.put(RILORE_TPORA, tpora); // campo virtuale
|
||||
rdoc.put(RDOC_CODCOSTO, codcosto);
|
||||
rdoc.put(RDOC_CODCMS, codcms);
|
||||
rdoc.put(RDOC_FASCMS, codfase);
|
||||
rdoc.put(RDOC_QTA, qtaore);
|
||||
rdoc.put(RDOC_UMQTA, risatt.um());
|
||||
rdoc.put(RDOC_PREZZO, costo);
|
||||
rdoc.put(RDOC_PREZZOL, rdoc.iva(risatt.cod_iva()).lordo(costo, ALL_DECIMALS));
|
||||
rdoc.put(RDOC_CODIVA, risatt.cod_iva());
|
||||
rilroa.put(RILORE_PROVV, key.provv());
|
||||
rilroa.put(RILORE_ANNO, key.anno());
|
||||
rilroa.put(RILORE_CODNUM, key.codnum());
|
||||
rilroa.put(RILORE_NDOC, key.ndoc());
|
||||
rilroa.put(RILORE_IDRIGA, rdoc.get_long(RDOC_IDRIGA));
|
||||
}
|
||||
else
|
||||
{
|
||||
rilroa.zero(RILORE_PROVV);
|
||||
rilroa.zero(RILORE_ANNO);
|
||||
rilroa.zero(RILORE_CODNUM);
|
||||
rilroa.zero(RILORE_NDOC);
|
||||
rilroa.zero(RILORE_IDRIGA);
|
||||
}
|
||||
err = rilroa.rewrite_write();
|
||||
}
|
||||
if (err != NOERR)
|
||||
break;
|
||||
}
|
||||
if (err == NOERR)
|
||||
{
|
||||
ca.destroy();
|
||||
sheet.destroy();
|
||||
riempi_sheet();
|
||||
}
|
||||
@ -832,6 +919,8 @@ TRilevamento_prev_msk::TRilevamento_prev_msk()
|
||||
s.delete_column(id);
|
||||
}
|
||||
_qtaore = 0;
|
||||
_numpr = ini_get_string(CONFIG_DITTA, "ci", "CODNUMPR");
|
||||
_tipopr = ini_get_string(CONFIG_DITTA, "ci", "TIPODOCPR");
|
||||
}
|
||||
|
||||
////////////////////////////////////////////
|
||||
@ -847,6 +936,7 @@ public:
|
||||
|
||||
void TRilevamento_prev_app::main_loop()
|
||||
{
|
||||
open_files(LF_DOC, LF_RIGHEDOC, LF_RILORE, 0);
|
||||
TRilevamento_prev_msk msk;
|
||||
while (msk.run() != K_QUIT)
|
||||
msk.esegui();
|
||||
|
@ -208,11 +208,15 @@ END
|
||||
DATE S_DADATA
|
||||
BEGIN
|
||||
PROMPT 2 7 "Dal "
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
DATE S_ADATA
|
||||
BEGIN
|
||||
PROMPT 22 7 "Al "
|
||||
CHECKTYPE REQUIRED
|
||||
VALIDATE DATE_CMP_FUNC >= #S_DADATA
|
||||
WARINING "La data finiale deve essere maggiore della data iniziale"
|
||||
END
|
||||
|
||||
STRING S_TPORA 2
|
||||
|
125
ci/ci2200.cpp
125
ci/ci2200.cpp
@ -2,6 +2,7 @@
|
||||
#include <automask.h>
|
||||
#include <colors.h>
|
||||
#include <defmask.h>
|
||||
#include <modaut.h>
|
||||
#include <recset.h>
|
||||
#include <sheet.h>
|
||||
#include <utility.h>
|
||||
@ -13,6 +14,8 @@
|
||||
#include "ci2200a.h"
|
||||
#include "rilore.h"
|
||||
#include "../ca/calib01.h"
|
||||
#include "../ca/commesse.h"
|
||||
#include "../ca/cfcms.h"
|
||||
#include "../ve/velib.h"
|
||||
|
||||
////////////////////////////////////////////
|
||||
@ -37,6 +40,8 @@ class TRilevamento_cons_msk : public TAutomask
|
||||
int _n_ex;
|
||||
int _es_array[32];
|
||||
TEsercizi_contabili _es;
|
||||
TString _numcn;
|
||||
TString _tipocn;
|
||||
|
||||
protected:
|
||||
const real proponi_costo(TToken_string& riga);
|
||||
@ -459,6 +464,8 @@ void TRilevamento_cons_msk::riempi_risoatt(char tipo)
|
||||
put_row_anal_fields(riga, rilore.get(RILORE_CODCOSTO), rilore.get(RILORE_CODCMS), rilore.get(RILORE_CODFASE));
|
||||
riga.add(rilore.get(RILORE_QTAORE), sheet.cid2index(S_QTAORE));
|
||||
riga.add(rilore.get(RILORE_COSTO), sheet.cid2index(S_COSTO));
|
||||
riga.add(rilore.get(RILORE_CUP), sheet.cid2index(S_CUP));
|
||||
riga.add(rilore.get(RILORE_CIG), sheet.cid2index(S_CIG));
|
||||
riga.add(rilore.get(RILORE_ID), sheet.cid2index(S_ID));
|
||||
|
||||
sheet.check_row(sheet.items() - 1);
|
||||
@ -551,8 +558,10 @@ void TRilevamento_cons_msk::azzera_tutto()
|
||||
//REGISTRA: metodo che salva nella tabella di modulo le
|
||||
//righe dello sheet che hanno valore > 0, ed elimina quelle che hanno
|
||||
//vaoler pari a zero, e poi ricarica lo sheet
|
||||
|
||||
void TRilevamento_cons_msk::registra()
|
||||
{
|
||||
TDoc_cache ca;
|
||||
TSheet_field& calendario = sfield(F_CALENDARIO);
|
||||
TSheet_field& sheet = sfield(F_SHEET);
|
||||
TRilevamento_ore rilroa;
|
||||
@ -572,11 +581,26 @@ void TRilevamento_cons_msk::registra()
|
||||
const int qtaore = riga.get_int(sheet.cid2index(S_QTAORE));
|
||||
const long id = riga.get_long(sheet.cid2index(S_ID));
|
||||
const real costo(riga.get(sheet.cid2index(S_COSTO)));
|
||||
const TString16 cup(riga.get(sheet.cid2index(S_CUP)));
|
||||
const TString16 cig(riga.get(sheet.cid2index(S_CIG)));
|
||||
|
||||
get_row_anal_fields(riga, codcosto, codcms, codfase);
|
||||
rilroa.read('C', id);
|
||||
const bool found = rilroa.read('C', id) == NOERR;
|
||||
if(qtaore == 0)
|
||||
err = rilroa.remove();
|
||||
{
|
||||
if (found)
|
||||
{
|
||||
err = rilroa.remove();
|
||||
if (_numcn.full() && _tipocn.full())
|
||||
{
|
||||
TDocumento & doc = ca.doc(rilroa);
|
||||
const int docrow = doc.id2rownum(rilroa.get_long(RILORE_IDRIGA));
|
||||
|
||||
if (docrow > 0)
|
||||
doc.destroy_row(docrow, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
rilroa.put(RILORE_TIPO, "C");
|
||||
@ -592,6 +616,77 @@ void TRilevamento_cons_msk::registra()
|
||||
rilroa.put(RILORE_CODFASE, codfase);
|
||||
rilroa.put(RILORE_QTAORE, qtaore);
|
||||
rilroa.put(RILORE_COSTO, costo);
|
||||
rilroa.put(RILORE_CUP, cup);
|
||||
rilroa.put(RILORE_CIG, cig);
|
||||
|
||||
if (_numcn.full() && _tipocn.full())
|
||||
{
|
||||
TDoc_key oldkey(rilroa);
|
||||
const long ndoc = date2ndoc(TDate(_giorno, mese, anno));
|
||||
|
||||
if (oldkey.provv() != 'D')
|
||||
{
|
||||
oldkey.set_provv();
|
||||
oldkey.set_anno(anno);
|
||||
oldkey.set_codnum(_numcn);
|
||||
oldkey.set_ndoc(ndoc);
|
||||
}
|
||||
|
||||
TDocumento & olddoc = ca.doc(oldkey);
|
||||
|
||||
int docrow = olddoc.id2rownum(rilroa.get_long(RILORE_IDRIGA));
|
||||
TDoc_key key(olddoc);
|
||||
|
||||
if (found && (key.anno() != anno || ndoc != olddoc.get_long(DOC_NDOC)))
|
||||
{
|
||||
if (docrow > 0)
|
||||
olddoc.destroy_row(docrow, true);
|
||||
docrow = -1;
|
||||
key.set_ndoc(ndoc);
|
||||
}
|
||||
|
||||
TDocumento & doc = ca.doc(key);
|
||||
|
||||
doc.set_tipo(_tipocn);
|
||||
doc.put(DOC_DATADOC, TDate(_giorno, mese, anno));
|
||||
|
||||
TSpesa_prest risatt(codice, tipora);
|
||||
|
||||
if (docrow < 0)
|
||||
{
|
||||
doc.new_row(risatt.tipo_riga());
|
||||
docrow = doc.physical_rows();
|
||||
doc.set_row_ids();
|
||||
}
|
||||
TRiga_documento & rdoc = doc[docrow];
|
||||
|
||||
rdoc.put(RDOC_TIPORIGA, risatt.tipo_riga());
|
||||
rdoc.put(RDOC_CODART, codice);
|
||||
rdoc.put(RDOC_DESCR, risatt.descrizione());
|
||||
rdoc.put(RDOC_CHECKED, "X");
|
||||
rdoc.put(RILORE_TPORA, tpora); // campo virtuale
|
||||
rdoc.put(RDOC_CODCOSTO, codcosto);
|
||||
rdoc.put(RDOC_CODCMS, codcms);
|
||||
rdoc.put(RDOC_FASCMS, codfase);
|
||||
rdoc.put(RDOC_QTA, qtaore);
|
||||
rdoc.put(RDOC_UMQTA, risatt.um());
|
||||
rdoc.put(RDOC_PREZZO, costo);
|
||||
rdoc.put(RDOC_PREZZOL, rdoc.iva(risatt.cod_iva()).lordo(costo, ALL_DECIMALS));
|
||||
rdoc.put(RDOC_CODIVA, risatt.cod_iva());
|
||||
rilroa.put(RILORE_PROVV, key.provv());
|
||||
rilroa.put(RILORE_ANNO, key.anno());
|
||||
rilroa.put(RILORE_CODNUM, key.codnum());
|
||||
rilroa.put(RILORE_NDOC, key.ndoc());
|
||||
rilroa.put(RILORE_IDRIGA, rdoc.get_long(RDOC_IDRIGA));
|
||||
}
|
||||
else
|
||||
{
|
||||
rilroa.zero(RILORE_PROVV);
|
||||
rilroa.zero(RILORE_ANNO);
|
||||
rilroa.zero(RILORE_CODNUM);
|
||||
rilroa.zero(RILORE_NDOC);
|
||||
rilroa.zero(RILORE_IDRIGA);
|
||||
}
|
||||
err = rilroa.rewrite_write();
|
||||
}
|
||||
if (err != NOERR)
|
||||
@ -599,6 +694,7 @@ void TRilevamento_cons_msk::registra()
|
||||
}
|
||||
if (err == NOERR)
|
||||
{
|
||||
ca.destroy();
|
||||
sheet.destroy();
|
||||
riempi_sheet();
|
||||
}
|
||||
@ -638,6 +734,28 @@ bool TRilevamento_cons_msk::on_field_event(TOperable_field& f, TField_event e, l
|
||||
{
|
||||
if (e == fe_modify && f.dlg() >= F_ANAL && f.dlg() < F_ANAL+12)
|
||||
riempi_sheet();
|
||||
if (main_app().has_module(CUAUT) && f.dlg() == _scms_lid)
|
||||
{
|
||||
if (e == fe_init || e == fe_modify)
|
||||
{
|
||||
const TRectype & curr = f.mask().efield(_scms_lid).browse()->cursor()->curr();
|
||||
const TString codcms = curr.get(COMMESSE_CODCMS);
|
||||
|
||||
f.mask().set(S_CMSH, codcms);
|
||||
if (e == fe_modify)
|
||||
{
|
||||
TToken_string key;
|
||||
|
||||
key.add(codcms);
|
||||
key.add("C");
|
||||
key.add(1);
|
||||
const TRectype & cfcms = cache().get(LF_CFCMS, key);
|
||||
|
||||
f.mask().set(S_CUP, cfcms.get(CFCMS_CUP), 3);
|
||||
f.mask().set(S_CIG, cfcms.get(CFCMS_CIG), 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
switch (f.dlg())
|
||||
{
|
||||
case DLG_DEFAULT:
|
||||
@ -850,6 +968,8 @@ TRilevamento_cons_msk::TRilevamento_cons_msk()
|
||||
set(F_ANNO, TDate(TODAY).year());
|
||||
}
|
||||
set(F_INTERVALLO, dett);
|
||||
_numcn = ini_get_string(CONFIG_DITTA, "ci", "CODNUMCN");
|
||||
_tipocn = ini_get_string(CONFIG_DITTA, "ci", "TIPODOCCN");
|
||||
}
|
||||
|
||||
////////////////////////////////////////////
|
||||
@ -865,6 +985,7 @@ public:
|
||||
|
||||
void TRilevamento_cons_app::main_loop()
|
||||
{
|
||||
open_files(LF_DOC, LF_RIGHEDOC, LF_RILORE, 0);
|
||||
TRilevamento_cons_msk msk;
|
||||
while (msk.run() != K_QUIT) ;
|
||||
}
|
||||
|
12
ci/ci2200a.h
12
ci/ci2200a.h
@ -24,9 +24,7 @@
|
||||
|
||||
#define S_RISOATT 101
|
||||
#define S_CODRIS 102
|
||||
#define S_DESRIS 119
|
||||
#define S_CODATT 202
|
||||
#define S_DESATT 219
|
||||
#define S_TPORA 103
|
||||
#define S_CDC1 104
|
||||
#define S_CDC2 105
|
||||
@ -43,4 +41,12 @@
|
||||
#define S_QTAORE 116
|
||||
#define S_COSTO 117
|
||||
#define S_OREDIS 118
|
||||
#define S_ID 120
|
||||
#define S_CUP 119
|
||||
#define S_CIG 120
|
||||
#define S_DESRIS 121
|
||||
#define S_DESATT 221
|
||||
#define S_ID 122
|
||||
|
||||
#define S_CMSH 350
|
||||
#define S_DCUP 351
|
||||
#define S_DCIG 352
|
||||
|
@ -32,7 +32,7 @@ ENDPAGE
|
||||
|
||||
PAGE "Rilevazione consuntivi" 0 2 0 0
|
||||
|
||||
GROUPBOX DLG_NULL 78 78
|
||||
GROUPBOX DLG_NULL 78 7
|
||||
BEGIN
|
||||
PROMPT 1 0 "@bSelezione"
|
||||
END
|
||||
@ -147,6 +147,8 @@ BEGIN
|
||||
ITEM "Qta\nOre@5"
|
||||
ITEM "Costo@6"
|
||||
ITEM "Ore\ndisponibilità"
|
||||
ITEM "CUP@15"
|
||||
ITEM "CIG@10"
|
||||
ITEM "Descrizione@50"
|
||||
ITEM "ID@8"
|
||||
END
|
||||
@ -174,9 +176,9 @@ END
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
PAGE "Riga consuntivo" -1 -1 78 13
|
||||
PAGE "Riga consuntivo" -1 -1 78 17
|
||||
|
||||
GROUPBOX DLG_NULL 76 12
|
||||
GROUPBOX DLG_NULL 76 16
|
||||
BEGIN
|
||||
PROMPT 1 1 "@bRisorsa - Attrezzatura"
|
||||
END
|
||||
@ -332,9 +334,61 @@ BEGIN
|
||||
PROMPT 50 11 "Quantità ore "
|
||||
END
|
||||
|
||||
STRING S_CMSH 20
|
||||
BEGIN
|
||||
PROMPT 50 16 ""
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
STRING S_CUP 15
|
||||
BEGIN
|
||||
PROMPT 2 12 "CUP "
|
||||
USE LF_CFCMS KEY 2 SELECT TIPOCF=="C"
|
||||
JOIN %CUP INTO CODTAB==CUP
|
||||
JOIN LF_CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||
INPUT COMMESSA S_CMSH SELECT
|
||||
INPUT CUP S_CUP
|
||||
DISPLAY "Codice CUP@15" CUP
|
||||
DISPLAY "Descrizione@50" %CUP->S0
|
||||
DISPLAY "Codice Cliente" CODCF
|
||||
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
|
||||
OUTPUT S_CUP CUP
|
||||
OUTPUT S_DCUP %CUP->S0
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING S_DCUP 50 30
|
||||
BEGIN
|
||||
PROMPT 40 12 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING S_CIG 10
|
||||
BEGIN
|
||||
PROMPT 2 13 "CIG "
|
||||
USE LF_CFCMS KEY 3 SELECT TIPOCF=="C"
|
||||
JOIN %CIG INTO CODTAB==CIG
|
||||
JOIN LF_CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||
INPUT COMMESSA S_CMSH SELECT
|
||||
INPUT CIG S_CIG
|
||||
DISPLAY "Codice CIG@15" CIG
|
||||
DISPLAY "Descrizione@50" %CIG->S0
|
||||
DISPLAY "Codice Cliente" CODCF
|
||||
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
|
||||
OUTPUT S_CIG CIG
|
||||
OUTPUT S_DCIG %CIG->S0
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING S_DCIG 50 30
|
||||
BEGIN
|
||||
PROMPT 40 13 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER S_ID 8
|
||||
BEGIN
|
||||
PROMPT 2 12 "ID "
|
||||
PROMPT 2 14 "ID "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
|
71
ci/cilib.cpp
71
ci/cilib.cpp
@ -842,5 +842,76 @@ TRilevamento_ore::TRilevamento_ore()
|
||||
zero();
|
||||
}
|
||||
|
||||
///////////////////////////
|
||||
//// TDoc_key ////
|
||||
///////////////////////////
|
||||
|
||||
TDoc_key::TDoc_key(const int anno, const TString& codnum, const long ndoc, const char provv)
|
||||
{
|
||||
add(provv);
|
||||
add(anno);
|
||||
add(codnum);
|
||||
add(ndoc);
|
||||
}
|
||||
TDoc_key::TDoc_key(const TRectype & rec)
|
||||
{
|
||||
add(rec.get_char(DOC_PROVV));
|
||||
add(rec.get_int(DOC_ANNO));
|
||||
add(rec.get(DOC_CODNUM));
|
||||
add(rec.get_long(DOC_NDOC));
|
||||
}
|
||||
|
||||
const long date2ndoc(const TDate date)
|
||||
{
|
||||
TDate inizio(date);
|
||||
|
||||
inizio.set_day(1);
|
||||
inizio.set_month(1);
|
||||
return date - inizio + 1;
|
||||
}
|
||||
///////////////////////////
|
||||
//// TDoc_cache ////
|
||||
///////////////////////////
|
||||
|
||||
//KEY2OBJ:sceglie il documento giusto da disco in modo da poterlo continuare, o lo crea se non c'è
|
||||
TObject* TDoc_cache::key2obj(const char* key)
|
||||
{
|
||||
TDocumento* doc = NULL;
|
||||
|
||||
TToken_string tmp(key);
|
||||
TDoc_key chiave(key);
|
||||
|
||||
const char provv = chiave.provv();
|
||||
const int anno = chiave.anno();
|
||||
const TString& codnum = chiave.codnum();
|
||||
const int ndoc = chiave.ndoc();
|
||||
|
||||
doc = new TDocumento(provv, anno, codnum, ndoc);
|
||||
|
||||
return doc;
|
||||
}
|
||||
|
||||
//DOC: restituisce un puntatore ad un documento identificato dalla chiave documento completa
|
||||
TDocumento& TDoc_cache::doc(const TDoc_key& kdoc)
|
||||
{
|
||||
return *(TDocumento*)objptr(kdoc);
|
||||
}
|
||||
|
||||
TDocumento& TDoc_cache::new_doc(TDoc_key& kdoc)
|
||||
{
|
||||
kdoc.set_ndoc(0L);
|
||||
return *(TDocumento*)objptr(kdoc);
|
||||
}
|
||||
|
||||
//DISCARDING: salva un documento sul disco prima di eliminarlo dalla cache
|
||||
void TDoc_cache::discarding(const THash_object* obj)
|
||||
{
|
||||
TDocumento& doc = (TDocumento&)obj->obj();
|
||||
|
||||
if (doc.physical_rows() == 0)
|
||||
doc.remove();
|
||||
else
|
||||
doc.rewrite();
|
||||
}
|
||||
|
||||
|
||||
|
52
ci/cilib.h
52
ci/cilib.h
@ -9,6 +9,10 @@
|
||||
#include <recarray.h>
|
||||
#endif
|
||||
|
||||
#ifndef __VELIB_H
|
||||
#include <../ve/velib.h>
|
||||
#endif
|
||||
|
||||
#ifndef __TABMOD_H
|
||||
#include <tabmod.h>
|
||||
#endif
|
||||
@ -242,4 +246,52 @@ public:
|
||||
TRilevamento_ore();
|
||||
};
|
||||
|
||||
///////////////////////////
|
||||
//// TDoc_key ////
|
||||
///////////////////////////
|
||||
|
||||
class TDoc_key: public TToken_string
|
||||
{
|
||||
public:
|
||||
const char provv() { return get(0)[0]; }
|
||||
const int anno() { return get_int(1); }
|
||||
const char* codnum() { return get(2); }
|
||||
const long ndoc() { return get_long(3); }
|
||||
|
||||
void set_provv(const char provv = 'D') { add(provv, 0); }
|
||||
void set_anno(const int anno) { add(anno, 1); }
|
||||
void set_codnum(const char* codnum) { add(codnum, 2); }
|
||||
void set_ndoc(const long ndoc) { add(ndoc, 3); }
|
||||
|
||||
TDoc_key& operator= (const char* key) { set(key); }
|
||||
|
||||
TDoc_key(const int anno, const TString& codnum, const long ndoc, const char provv = 'D');
|
||||
TDoc_key(const char* key):TToken_string(key){}
|
||||
TDoc_key(const TToken_string& key):TToken_string(key){}
|
||||
TDoc_key(const TDoc_key& key):TToken_string(key){}
|
||||
TDoc_key(const TRectype & rec);
|
||||
TDoc_key():TToken_string(){}
|
||||
};
|
||||
|
||||
///////////////////////////
|
||||
//// TDoc_cache ////
|
||||
///////////////////////////
|
||||
|
||||
const long date2ndoc(const TDate data);
|
||||
|
||||
//classe TDoc_cache
|
||||
class TDoc_cache : public TCache
|
||||
{
|
||||
protected:
|
||||
virtual void discarding(const THash_object* obj);
|
||||
virtual TObject* key2obj(const char* key);
|
||||
|
||||
public:
|
||||
TDocumento& doc(const TDoc_key& kdoc);
|
||||
TDocumento& doc(const TRectype& rec) { return doc(TDoc_key(rec)); }
|
||||
TDocumento& new_doc(TDoc_key& kdoc);
|
||||
TDocumento& new_doc(const TRectype& rec) { return new_doc(TDoc_key(rec)); }
|
||||
TDoc_cache() : TCache(1883) {}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user