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_DETTDISP, configfile.get("DETTDISP"));
|
||||||
mask().set(F_DETTCONS, configfile.get("DETTCONS"));
|
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();
|
mask().sheet().force_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,6 +207,10 @@ void TConfigurazioneIndustriale_app::sheet_to_file()
|
|||||||
}
|
}
|
||||||
configfile.set("DETTDISP", mask().get(F_DETTDISP));
|
configfile.set("DETTDISP", mask().get(F_DETTDISP));
|
||||||
configfile.set("DETTCONS", mask().get(F_DETTCONS));
|
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)
|
if (totlen>_maxlen)
|
||||||
message_box("E' probabile che la lunghezza delle descrizioni inserite ne impedisca la totale visualizzazione sullo schermo");
|
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_MOVEDN 153
|
||||||
#define F_DETTDISP 154
|
#define F_DETTDISP 154
|
||||||
#define F_DETTCONS 156
|
#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_FILTRO 101
|
||||||
#define FR_DES 102
|
#define FR_DES 102
|
||||||
|
107
ci/ci0300a.uml
107
ci/ci0300a.uml
@ -64,6 +64,113 @@ BEGIN
|
|||||||
FIELD DETTCONS
|
FIELD DETTCONS
|
||||||
END
|
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
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
104
ci/ci2100.cpp
104
ci/ci2100.cpp
@ -28,6 +28,8 @@ class TRilevamento_prev_msk : public TAutomask
|
|||||||
short _scdc_sid, _scdc_lid;
|
short _scdc_sid, _scdc_lid;
|
||||||
short _scms_sid, _scms_lid;
|
short _scms_sid, _scms_lid;
|
||||||
short _sfase_sid, _sfase_lid;
|
short _sfase_sid, _sfase_lid;
|
||||||
|
TString _numpr;
|
||||||
|
TString _tipopr;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
const real proponi_costo(const TMask& msk);
|
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
|
//vaoler pari a zero, e poi ricarica lo sheet
|
||||||
void TRilevamento_prev_msk::registra()
|
void TRilevamento_prev_msk::registra()
|
||||||
{
|
{
|
||||||
|
TDoc_cache ca;
|
||||||
TRilevamento_ore rilroa;
|
TRilevamento_ore rilroa;
|
||||||
TSheet_field& sheet = sfield(F_SHEET);
|
TSheet_field& sheet = sfield(F_SHEET);
|
||||||
int err = NOERR;
|
int err = NOERR;
|
||||||
@ -574,17 +577,32 @@ void TRilevamento_prev_msk::registra()
|
|||||||
const real costo(tmp);
|
const real costo(tmp);
|
||||||
|
|
||||||
get_row_anal_fields(riga, codcosto, codcms, codfase);
|
get_row_anal_fields(riga, codcosto, codcms, codfase);
|
||||||
rilroa.read('P', id);
|
const bool found = rilroa.read('P', id) == NOERR;
|
||||||
if (qtaore == 0)
|
if (qtaore == 0)
|
||||||
err = rilroa.remove();
|
|
||||||
else
|
|
||||||
|
|
||||||
{
|
{
|
||||||
|
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_TIPO, "P");
|
||||||
rilroa.put(RILORE_ID, id);
|
rilroa.put(RILORE_ID, id);
|
||||||
rilroa.put(RILORE_ANNO, dadata.year());
|
rilroa.put(RILORE_ANNO, anno);
|
||||||
rilroa.put(RILORE_MESE, dadata.month());
|
rilroa.put(RILORE_MESE, mese);
|
||||||
rilroa.put(RILORE_GIORNO, dadata.day());
|
rilroa.put(RILORE_GIORNO, giorno);
|
||||||
rilroa.put(RILORE_TIPORA, tipora);
|
rilroa.put(RILORE_TIPORA, tipora);
|
||||||
rilroa.put(RILORE_CODICE, codice);
|
rilroa.put(RILORE_CODICE, codice);
|
||||||
rilroa.put(RILORE_TPORA, tpora);
|
rilroa.put(RILORE_TPORA, tpora);
|
||||||
@ -595,6 +613,74 @@ void TRilevamento_prev_msk::registra()
|
|||||||
rilroa.put(RILORE_ADATA, adata);
|
rilroa.put(RILORE_ADATA, adata);
|
||||||
rilroa.put(RILORE_QTAORE, qtaore);
|
rilroa.put(RILORE_QTAORE, qtaore);
|
||||||
rilroa.put(RILORE_COSTO, costo);
|
rilroa.put(RILORE_COSTO, costo);
|
||||||
|
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();
|
err = rilroa.rewrite_write();
|
||||||
}
|
}
|
||||||
if (err != NOERR)
|
if (err != NOERR)
|
||||||
@ -602,6 +688,7 @@ void TRilevamento_prev_msk::registra()
|
|||||||
}
|
}
|
||||||
if (err == NOERR)
|
if (err == NOERR)
|
||||||
{
|
{
|
||||||
|
ca.destroy();
|
||||||
sheet.destroy();
|
sheet.destroy();
|
||||||
riempi_sheet();
|
riempi_sheet();
|
||||||
}
|
}
|
||||||
@ -832,6 +919,8 @@ TRilevamento_prev_msk::TRilevamento_prev_msk()
|
|||||||
s.delete_column(id);
|
s.delete_column(id);
|
||||||
}
|
}
|
||||||
_qtaore = 0;
|
_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()
|
void TRilevamento_prev_app::main_loop()
|
||||||
{
|
{
|
||||||
|
open_files(LF_DOC, LF_RIGHEDOC, LF_RILORE, 0);
|
||||||
TRilevamento_prev_msk msk;
|
TRilevamento_prev_msk msk;
|
||||||
while (msk.run() != K_QUIT)
|
while (msk.run() != K_QUIT)
|
||||||
msk.esegui();
|
msk.esegui();
|
||||||
|
@ -208,11 +208,15 @@ END
|
|||||||
DATE S_DADATA
|
DATE S_DADATA
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 7 "Dal "
|
PROMPT 2 7 "Dal "
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE S_ADATA
|
DATE S_ADATA
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 22 7 "Al "
|
PROMPT 22 7 "Al "
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
VALIDATE DATE_CMP_FUNC >= #S_DADATA
|
||||||
|
WARINING "La data finiale deve essere maggiore della data iniziale"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING S_TPORA 2
|
STRING S_TPORA 2
|
||||||
|
123
ci/ci2200.cpp
123
ci/ci2200.cpp
@ -2,6 +2,7 @@
|
|||||||
#include <automask.h>
|
#include <automask.h>
|
||||||
#include <colors.h>
|
#include <colors.h>
|
||||||
#include <defmask.h>
|
#include <defmask.h>
|
||||||
|
#include <modaut.h>
|
||||||
#include <recset.h>
|
#include <recset.h>
|
||||||
#include <sheet.h>
|
#include <sheet.h>
|
||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
@ -13,6 +14,8 @@
|
|||||||
#include "ci2200a.h"
|
#include "ci2200a.h"
|
||||||
#include "rilore.h"
|
#include "rilore.h"
|
||||||
#include "../ca/calib01.h"
|
#include "../ca/calib01.h"
|
||||||
|
#include "../ca/commesse.h"
|
||||||
|
#include "../ca/cfcms.h"
|
||||||
#include "../ve/velib.h"
|
#include "../ve/velib.h"
|
||||||
|
|
||||||
////////////////////////////////////////////
|
////////////////////////////////////////////
|
||||||
@ -37,6 +40,8 @@ class TRilevamento_cons_msk : public TAutomask
|
|||||||
int _n_ex;
|
int _n_ex;
|
||||||
int _es_array[32];
|
int _es_array[32];
|
||||||
TEsercizi_contabili _es;
|
TEsercizi_contabili _es;
|
||||||
|
TString _numcn;
|
||||||
|
TString _tipocn;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
const real proponi_costo(TToken_string& riga);
|
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));
|
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_QTAORE), sheet.cid2index(S_QTAORE));
|
||||||
riga.add(rilore.get(RILORE_COSTO), sheet.cid2index(S_COSTO));
|
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));
|
riga.add(rilore.get(RILORE_ID), sheet.cid2index(S_ID));
|
||||||
|
|
||||||
sheet.check_row(sheet.items() - 1);
|
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
|
//REGISTRA: metodo che salva nella tabella di modulo le
|
||||||
//righe dello sheet che hanno valore > 0, ed elimina quelle che hanno
|
//righe dello sheet che hanno valore > 0, ed elimina quelle che hanno
|
||||||
//vaoler pari a zero, e poi ricarica lo sheet
|
//vaoler pari a zero, e poi ricarica lo sheet
|
||||||
|
|
||||||
void TRilevamento_cons_msk::registra()
|
void TRilevamento_cons_msk::registra()
|
||||||
{
|
{
|
||||||
|
TDoc_cache ca;
|
||||||
TSheet_field& calendario = sfield(F_CALENDARIO);
|
TSheet_field& calendario = sfield(F_CALENDARIO);
|
||||||
TSheet_field& sheet = sfield(F_SHEET);
|
TSheet_field& sheet = sfield(F_SHEET);
|
||||||
TRilevamento_ore rilroa;
|
TRilevamento_ore rilroa;
|
||||||
@ -572,11 +581,26 @@ void TRilevamento_cons_msk::registra()
|
|||||||
const int qtaore = riga.get_int(sheet.cid2index(S_QTAORE));
|
const int qtaore = riga.get_int(sheet.cid2index(S_QTAORE));
|
||||||
const long id = riga.get_long(sheet.cid2index(S_ID));
|
const long id = riga.get_long(sheet.cid2index(S_ID));
|
||||||
const real costo(riga.get(sheet.cid2index(S_COSTO)));
|
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);
|
get_row_anal_fields(riga, codcosto, codcms, codfase);
|
||||||
rilroa.read('C', id);
|
const bool found = rilroa.read('C', id) == NOERR;
|
||||||
if(qtaore == 0)
|
if(qtaore == 0)
|
||||||
|
{
|
||||||
|
if (found)
|
||||||
|
{
|
||||||
err = rilroa.remove();
|
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
|
else
|
||||||
{
|
{
|
||||||
rilroa.put(RILORE_TIPO, "C");
|
rilroa.put(RILORE_TIPO, "C");
|
||||||
@ -592,6 +616,77 @@ void TRilevamento_cons_msk::registra()
|
|||||||
rilroa.put(RILORE_CODFASE, codfase);
|
rilroa.put(RILORE_CODFASE, codfase);
|
||||||
rilroa.put(RILORE_QTAORE, qtaore);
|
rilroa.put(RILORE_QTAORE, qtaore);
|
||||||
rilroa.put(RILORE_COSTO, costo);
|
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();
|
err = rilroa.rewrite_write();
|
||||||
}
|
}
|
||||||
if (err != NOERR)
|
if (err != NOERR)
|
||||||
@ -599,6 +694,7 @@ void TRilevamento_cons_msk::registra()
|
|||||||
}
|
}
|
||||||
if (err == NOERR)
|
if (err == NOERR)
|
||||||
{
|
{
|
||||||
|
ca.destroy();
|
||||||
sheet.destroy();
|
sheet.destroy();
|
||||||
riempi_sheet();
|
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)
|
if (e == fe_modify && f.dlg() >= F_ANAL && f.dlg() < F_ANAL+12)
|
||||||
riempi_sheet();
|
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())
|
switch (f.dlg())
|
||||||
{
|
{
|
||||||
case DLG_DEFAULT:
|
case DLG_DEFAULT:
|
||||||
@ -850,6 +968,8 @@ TRilevamento_cons_msk::TRilevamento_cons_msk()
|
|||||||
set(F_ANNO, TDate(TODAY).year());
|
set(F_ANNO, TDate(TODAY).year());
|
||||||
}
|
}
|
||||||
set(F_INTERVALLO, dett);
|
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()
|
void TRilevamento_cons_app::main_loop()
|
||||||
{
|
{
|
||||||
|
open_files(LF_DOC, LF_RIGHEDOC, LF_RILORE, 0);
|
||||||
TRilevamento_cons_msk msk;
|
TRilevamento_cons_msk msk;
|
||||||
while (msk.run() != K_QUIT) ;
|
while (msk.run() != K_QUIT) ;
|
||||||
}
|
}
|
||||||
|
12
ci/ci2200a.h
12
ci/ci2200a.h
@ -24,9 +24,7 @@
|
|||||||
|
|
||||||
#define S_RISOATT 101
|
#define S_RISOATT 101
|
||||||
#define S_CODRIS 102
|
#define S_CODRIS 102
|
||||||
#define S_DESRIS 119
|
|
||||||
#define S_CODATT 202
|
#define S_CODATT 202
|
||||||
#define S_DESATT 219
|
|
||||||
#define S_TPORA 103
|
#define S_TPORA 103
|
||||||
#define S_CDC1 104
|
#define S_CDC1 104
|
||||||
#define S_CDC2 105
|
#define S_CDC2 105
|
||||||
@ -43,4 +41,12 @@
|
|||||||
#define S_QTAORE 116
|
#define S_QTAORE 116
|
||||||
#define S_COSTO 117
|
#define S_COSTO 117
|
||||||
#define S_OREDIS 118
|
#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
|
PAGE "Rilevazione consuntivi" 0 2 0 0
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 78
|
GROUPBOX DLG_NULL 78 7
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 0 "@bSelezione"
|
PROMPT 1 0 "@bSelezione"
|
||||||
END
|
END
|
||||||
@ -147,6 +147,8 @@ BEGIN
|
|||||||
ITEM "Qta\nOre@5"
|
ITEM "Qta\nOre@5"
|
||||||
ITEM "Costo@6"
|
ITEM "Costo@6"
|
||||||
ITEM "Ore\ndisponibilità"
|
ITEM "Ore\ndisponibilità"
|
||||||
|
ITEM "CUP@15"
|
||||||
|
ITEM "CIG@10"
|
||||||
ITEM "Descrizione@50"
|
ITEM "Descrizione@50"
|
||||||
ITEM "ID@8"
|
ITEM "ID@8"
|
||||||
END
|
END
|
||||||
@ -174,9 +176,9 @@ END
|
|||||||
ENDPAGE
|
ENDPAGE
|
||||||
ENDMASK
|
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
|
BEGIN
|
||||||
PROMPT 1 1 "@bRisorsa - Attrezzatura"
|
PROMPT 1 1 "@bRisorsa - Attrezzatura"
|
||||||
END
|
END
|
||||||
@ -332,9 +334,61 @@ BEGIN
|
|||||||
PROMPT 50 11 "Quantità ore "
|
PROMPT 50 11 "Quantità ore "
|
||||||
END
|
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
|
NUMBER S_ID 8
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 12 "ID "
|
PROMPT 2 14 "ID "
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
71
ci/cilib.cpp
71
ci/cilib.cpp
@ -842,5 +842,76 @@ TRilevamento_ore::TRilevamento_ore()
|
|||||||
zero();
|
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>
|
#include <recarray.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __VELIB_H
|
||||||
|
#include <../ve/velib.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef __TABMOD_H
|
#ifndef __TABMOD_H
|
||||||
#include <tabmod.h>
|
#include <tabmod.h>
|
||||||
#endif
|
#endif
|
||||||
@ -242,4 +246,52 @@ public:
|
|||||||
TRilevamento_ore();
|
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
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user