Nuove implementazioni

git-svn-id: svn://10.65.10.50/branches/R_10_00@22934 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2014-05-14 08:25:42 +00:00
parent e9f6cac415
commit 858ae87f12
6 changed files with 258 additions and 25 deletions

View File

@ -26,6 +26,19 @@
#define F_CODIVANI 169
#define F_DESIVANI 170
#define F_CODARTLC 181
#define F_DESARTLC 182
#define F_CODARTGC 183
#define F_DESARTGC 184
#define F_CODARTAC 185
#define F_DESARTAC 186
#define F_CODARTLF 187
#define F_DESARTLF 188
#define F_CODARTGF 189
#define F_DESARTGF 190
#define F_CODARTAF 191
#define F_DESARTAF 192
#define FR_FILTRO 101
#define FR_DES 102
#define FR_INS 103

View File

@ -132,13 +132,20 @@ STRING F_CODARTPR 20
BEGIN
PROMPT 2 8 "Articolo "
FIELD CODARTPR
USE LF_ANAMAG
USE LF_ANAMAG /*SELECT (SOTTOCV!=0)&&(SOTTOCA!=0)*/
INPUT CODART F_CODARTPR
DISPLAY "Codice@20" CODART
DISPLAY "Descrizione@50" DESCR
DISPLAY "Grp.V." GRUPPOV
DISPLAY "Con.V." CONTOV
DISPLAY "Sot.V." SOTTOCV
DISPLAY "Grp.A." GRUPPOA
DISPLAY "Con.A." CONTOA
DISPLAY "Sot.A." SOTTOCA
OUTPUT F_CODARTPR CODART
OUTPUT F_DESARTPR DESCR
CHECKTYPE NORMAL
ADD RUN ve2 -3
FLAG "U"
END
@ -146,12 +153,17 @@ STRING F_DESARTPR 50 30
BEGIN
PROMPT 45 8 ""
USE LF_ANAMAG KEY 2
INPUT DESCR F_DESARTPR
INPUT DESCR F_DESARTPR /*SELECT (SOTTOCV!=0)&&(SOTTOCA!=0)*/
DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice@20" CODART
DISPLAY "Grp.V." GRUPPOV
DISPLAY "Con.V." CONTOV
DISPLAY "Sot.V." SOTTOCV
DISPLAY "Grp.A." GRUPPOA
DISPLAY "Con.A." CONTOA
DISPLAY "Sot.A." SOTTOCA
COPY OUTPUT F_CODARTPR
CHECKTYPE NORMAL
FLAG "U"
END
GROUPBOX DLG_NULL 78 5
@ -325,6 +337,163 @@ END
ENDPAGE
PAGE "Certificati" 0 2 0 0
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 1 1 "Pagamenti clienti"
END
STRING F_CODARTLC 20
BEGIN
PROMPT 2 2 "Lavori "
COPY USE F_CODARTPR
INPUT CODART F_CODARTLC
COPY DISPLAY F_CODARTPR
OUTPUT F_CODARTLC CODART
OUTPUT F_DESARTLC DESCR
CHECKTYPE NORMAL
ADD RUN ve2 -3
FLAG "U"
FIELD CODARTLC
END
STRING F_DESARTLC 50 30
BEGIN
PROMPT 45 2 ""
COPY USE F_DESARTPR
INPUT DESCR F_DESARTLC
COPY DISPLAY F_DESARTPR
COPY OUTPUT F_CODARTLC
CHECKTYPE NORMAL
END
STRING F_CODARTGC 20
BEGIN
PROMPT 2 3 "Garanzia "
COPY USE F_CODARTPR
INPUT CODART F_CODARTGC
COPY DISPLAY F_CODARTPR
OUTPUT F_CODARTGC CODART
OUTPUT F_DESARTGC DESCR
CHECKTYPE NORMAL
ADD RUN ve2 -3
FIELD CODARTGC
END
STRING F_DESARTGC 50 30
BEGIN
PROMPT 45 3 ""
COPY USE F_DESARTPR
INPUT DESCR F_DESARTGC
COPY DISPLAY F_DESARTPR
COPY OUTPUT F_CODARTGC
CHECKTYPE NORMAL
END
STRING F_CODARTAC 20
BEGIN
PROMPT 2 4 "Anticipi "
COPY USE F_CODARTPR
INPUT CODART F_CODARTAC
COPY DISPLAY F_CODARTPR
OUTPUT F_CODARTAC CODART
OUTPUT F_DESARTAC DESCR
CHECKTYPE NORMAL
ADD RUN ve2 -3
FLAG "U"
FIELD CODARTAC
END
STRING F_DESARTAC 50 30
BEGIN
PROMPT 45 4 ""
COPY USE F_DESARTPR
INPUT DESCR F_DESARTAC
COPY DISPLAY F_DESARTPR
COPY OUTPUT F_CODARTAC
CHECKTYPE NORMAL
END
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 1 7 "Pagamenti fornitori"
END
STRING F_CODARTLF 20
BEGIN
PROMPT 2 8 "Lavori "
COPY USE F_CODARTPR
INPUT CODART F_CODARTLF
COPY DISPLAY F_CODARTPR
OUTPUT F_CODARTLF CODART
OUTPUT F_DESARTLF DESCR
CHECKTYPE NORMAL
ADD RUN ve2 -3
FLAG "U"
FIELD CODARTLF
END
STRING F_DESARTLF 50 30
BEGIN
PROMPT 45 8 ""
COPY USE F_DESARTPR
INPUT DESCR F_DESARTLF
COPY DISPLAY F_DESARTPR
COPY OUTPUT F_CODARTLF
CHECKTYPE NORMAL
END
STRING F_CODARTGF 20
BEGIN
PROMPT 2 9 "Garanzia "
COPY USE F_CODARTPR
INPUT CODART F_CODARTGF
COPY DISPLAY F_CODARTPR
OUTPUT F_CODARTGF CODART
OUTPUT F_DESARTGF DESCR
CHECKTYPE NORMAL
ADD RUN ve2 -3
FLAG "U"
FIELD CODARTGF
END
STRING F_DESARTGF 50 30
BEGIN
PROMPT 45 9 ""
COPY USE F_DESARTPR
INPUT DESCR F_DESARTGF
COPY DISPLAY F_DESARTPR
COPY OUTPUT F_CODARTGF
CHECKTYPE NORMAL
END
STRING F_CODARTAF 20
BEGIN
PROMPT 2 10 "Anticipi "
COPY USE F_CODARTPR
INPUT CODART F_CODARTAF
COPY DISPLAY F_CODARTPR
OUTPUT F_CODARTAF CODART
OUTPUT F_DESARTAF DESCR
CHECKTYPE NORMAL
ADD RUN ve2 -3
FLAG "U"
FIELD CODARTAF
END
STRING F_DESARTAF 50 30
BEGIN
PROMPT 45 10 ""
COPY USE F_DESARTPR
INPUT DESCR F_DESARTAF
COPY DISPLAY F_DESARTPR
COPY OUTPUT F_CODARTAF
CHECKTYPE NORMAL
END
ENDPAGE
ENDMASK
PAGE "Tipologia Documento" -1 -1 78 13

View File

@ -9,8 +9,6 @@
#include "../ca/rmovana.h"
#include "../ve/velib07.h"
//#include "../include/doc.h"
//#include "../include/rdoc.h"
#include "../ca/commesse.h"
///////////////////////////////////////////////////////////

View File

@ -13,8 +13,7 @@
// Recordset
///////////////////////////////////////////////////////////
//recordset per stampe mensili (dettagliate per giorno)
TRil_ore_recordset::TRil_ore_recordset()
: TAS400_recordset("AS400(512)")
TRil_ore_recordset::TRil_ore_recordset() : TAS400_recordset("AS400(512)")
{
//const char* name, int pos, int len, TFieldtypes t = _alfafld, bool required = false, const TVariant& def = NULL_VARIANT
create_field("Key1", -1, 20, _alfafld, true);

View File

@ -404,6 +404,7 @@ protected:
void get_row_anal_fields(TToken_string & row, TString & cdc, TString & cms, TString & fase) const;
void put_row_anal_fields(TToken_string & row, const TString & cdc, const TString & cms, const TString & fase);
long save_docs(TAssoc_array& docs, TAssoc_array& movs, TLog_report& log) const;
const TString& good_umart(const TString& codart, const TString& um) const;
public:
bool save_sheet();
@ -638,10 +639,13 @@ bool TConsuntivazione_msk::load_sheet()
TSheet_field& sheet = sfield(F_SHEET);
sheet.destroy();
_locked = true;
TProgress_monitor mon(def.items(), TR("Caricamento ore..."), true);
int r = 0;
for (bool ok = def.move_first(); ok; ok = def.move_next())
{
sheet.autoload_line(++r, rec);
if (!mon.add_status())
break;
if (rec.get_long(RILORE_NDOC) > 0)
{
TToken_string& row = sheet.row(r-1);
@ -749,6 +753,26 @@ void TConsuntivazione_msk::riempi_nuova_riga(int r)
sheet.force_update(r);
}
const TString& TConsuntivazione_msk::good_umart(const TString& codart, const TString& um) const
{
// Reperisce unità di misura standard per codart
TString80 key; key << codart << "|1";
const TString& defum = cache().get(LF_UMART, key, UMART_UM);
// Controlla unità di misura fuori standard
if (um.full() && um != defum)
{
TLocalisamfile umart(LF_UMART);
umart.setkey(2);
umart.put(UMART_CODART, codart);
umart.put(UMART_UM, um);
if (umart.read() == NOERR)
return um;
}
return defum;
}
bool TConsuntivazione_msk::add_ril_to_doc(TRectype& rilore, TDocumento& doc, TLog_report& log) const
{
const char tipo_roa = rilore.get_char(RILORE_TIPORA); // 'R'isorsa o 'A'ttrezzatura
@ -777,6 +801,7 @@ bool TConsuntivazione_msk::add_ril_to_doc(TRectype& rilore, TDocumento& doc, TLo
const real ore = rilore.get(RILORE_QTAORE);
const real prezzo = rilore.get(RILORE_COSTO);
const TString80 cms = rilore.get(RILORE_CODCMS);
const TString16 fas = rilore.get(RILORE_CODFASE);
int found = 0;
if (!ore.is_zero() && !prezzo.is_zero())
@ -785,7 +810,8 @@ bool TConsuntivazione_msk::add_ril_to_doc(TRectype& rilore, TDocumento& doc, TLo
{
if (rdoc->get(RDOC_CODARTMAG) == codart &&
rdoc->get_real(RDOC_PREZZO) == prezzo &&
rdoc->get(RDOC_CODCMS) == cms)
rdoc->get(RDOC_CODCMS) == cms &&
rdoc->get(RDOC_FASCMS) == fas)
{
found = r;
break;
@ -798,6 +824,7 @@ bool TConsuntivazione_msk::add_ril_to_doc(TRectype& rilore, TDocumento& doc, TLo
riga.put(RDOC_CODART, codart);
riga.put(RDOC_CODARTMAG, codart);
riga.put(RDOC_CODCMS, cms);
riga.put(RDOC_FASCMS, fas);
riga.put(RDOC_CHECKED, "X");
riga.put(RDOC_DESCR, anamag.get(ANAMAG_DESCR));
riga.put(RDOC_PREZZO, prezzo);
@ -808,14 +835,13 @@ bool TConsuntivazione_msk::add_ril_to_doc(TRectype& rilore, TDocumento& doc, TLo
codiva = anamag.get(ANAMAG_CODIVA);
riga.put(RDOC_CODIVA, codiva);
// Controllo unità di misura
TString4 um = roa.get("S7");
if (um.blank())
{
TString80 key; key << codart << "|1";
um = cache().get(LF_UMART, key, UMART_UM);
}
if (disponibilita)
um = good_umart(codart, EMPTY_STRING);
else
um = good_umart(codart, um);
riga.put(RDOC_UMQTA, um);
found = riga.get_int(RDOC_NRIGA);
}
@ -849,26 +875,31 @@ bool TConsuntivazione_msk::add_ril_to_mov(TRectype& rilore, TAnal_mov& mov, TLog
const real ore = rilore.get(RILORE_QTAORE);
const real prezzo = rilore.get(RILORE_COSTO);
const TString80 cms = rilore.get(RILORE_CODCMS);
const TString16 fas = rilore.get(RILORE_CODFASE);
bool done = !ore.is_zero() && !prezzo.is_zero();
if (done)
{
// Cerca eventuale riga compatibile
int i = 0;
for (i = mov.rows(); i > 0; i--)
{
TRectype& row = mov.body()[i];
if (row.get(RMOVANA_CODCONTO) == conto && row.get(RMOVANA_CODCMS) == cms)
const TRectype& row = mov.body()[i];
if (row.get(RMOVANA_CODCONTO) == conto && row.get(RMOVANA_CODCMS) == cms && row.get(RMOVANA_CODFASE) == fas)
break;
}
// Crea nuova riga se necessario
if (i <= 0)
{
TRectype& row = mov.new_row();
row.put(RMOVANA_CODCONTO, conto);
row.put(RMOVANA_CODCMS, cms);
row.put(RMOVANA_CODCMS, cms);
row.put(RMOVANA_CODFASE, fas);
i = row.get_int(RMOVANA_NUMRIG);
}
// Incrementa importo
TRectype& row = mov.body()[i];
row.put(RMOVANA_SEZIONE, "D");
row.put(RMOVANA_SEZIONE, 'D');
row.add(RMOVANA_IMPORTO, ore*prezzo);
}
@ -981,15 +1012,16 @@ bool TConsuntivazione_msk::contabilizza()
break;
}
TMask m(TR("Parametri contabilizzazione"), 1, 28, 5);
TMask m(TR("Parametri contabilizzazione"), 1, 28, 7);
m.add_button_tool(DLG_OK, "", TOOL_OK);
m.add_button_tool(DLG_CANCEL, "", TOOL_CANCEL);
m.add_button_tool(DLG_INFO, "", TOOL_INFO);
m.add_date(101, 0, PR("Dal giorno "), 1, 1, daily ? "" : "D").check_type(CHECK_REQUIRED);
m.add_date(102, 0, PR("Al giorno "), 1, 2, daily ? "" : "D").check_type(CHECK_REQUIRED);
m.add_boolean(103, 0, TR("Generazione analitica"), 1, 3, "D");
m.set(101, dal);
m.set(102, al);
if (main_app().has_module(CAAUT))
if (ca_config().get_int("Authorizations") > 1)
{
m.enable(103);
m.set(103, "X");
@ -1074,7 +1106,7 @@ bool TConsuntivazione_msk::contabilizza()
<< "\nFROM TIPO=C DADATA=" << dal
<< "\nTO TIPO=C DADATA=" << al;
TISAM_recordset recset(query);
TProgind pi(recset.items(), msg);
TProgress_monitor pi(recset.items(), msg);
TRectype& rilore = recset.cursor()->curr();
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
{
@ -1175,9 +1207,9 @@ bool TConsuntivazione_msk::cerca_disponibilita(int riga) const
const int col_cms = s.cid2index(S_CDC1);
const TToken_string& r = s.row(riga);
TString80 cod_att; r.get(col_att, cod_att); cod_att.trim();
TString80 cod_att; r.get(col_att, cod_att); cod_att.trim();
TString4 tipo_ora; r.get(col_ora, tipo_ora); tipo_ora.trim();
TString80 cod_cms; r.get(col_cms, cod_att); cod_cms.trim();
TString80 cod_cms; r.get(col_cms, cod_cms); cod_cms.trim();
for (int i = riga-1; i <= riga+1; i+=2)
{
if (i >= 0 && i < s.items())
@ -1329,7 +1361,8 @@ bool TConsuntivazione_msk::on_field_event(TOperable_field& o, TField_event e, lo
TToken_string& rowd = sheet.row(nr);
rowd = row;
rowd.add(orad, 4);
rowd.add(1, 5);
if (atr.get_int("I13") != 2) // Se non è un'attrezzatura forza le ore a 1
rowd.add(1, 5); // altrimenti lascia la stessa quantità della riga collegata
rowd.add(atr.get("R11"), 6);
sheet.force_update(nr);
}
@ -1454,14 +1487,17 @@ TConsuntivazione_msk::TConsuntivazione_msk() : _locked(false)
{
if (fasinfo.parent() == LF_COMMESSE)
{
// Commessa in testata per filtro / proposta
int h = ca_multilevel_code_info(LF_COMMESSE).levels();
const int h1 = ca_create_fields_compact(*this, 0, LF_FASI, 2, y, dlg, dlg + 100);
const int h1 = ca_create_fields_compact(*this, 0, LF_FASI, 2, y, dlg, dlg + 100);
y += 2;
_cms_sid = dlg;
_cms_lid = dlg + h - 1;
_fase_sid = _cms_lid + 1;
_fase_lid = dlg + h1 - 1;
dlg += h1;
// Commessa nelle righe
const int sh = ca_create_fields_compact(sm, 0, LF_FASI, 1, sy, sdlg, sdlg + 50);
sy += 2;
_scms_sid = sdlg;
@ -1495,6 +1531,16 @@ TConsuntivazione_msk::TConsuntivazione_msk() : _locked(false)
sdlg += h;
}
// Sistema nome del campo CODCMS
for (short id = _scms_lid; id >= _scms_sid; id--)
{
TEdit_field& ef = sm.efield(id);
TFieldref* fr = (TFieldref*)ef.field();
if (fr != NULL)
fr->set_name(RILORE_CODCMS);
}
for (short id = S_CDC12 + 100; id >= S_CDC1 + 100; id--)
{
const int pos = sm.id2pos(id);

View File

@ -14,6 +14,14 @@ Picture = <cg01>
Module = 8
Flags = "F"
Item_01 = "Parametri di configurazione", "ci0 -2", "F"
Item_02 = "Parametri Contabilità Analitica", "ca0 -2", "F"
Item_03 = "Tabelle di ripartizione", "ca0 -7", "F"
Item_04 = "Piano dei conti", "ca0 -3", "SF"
Item_05 = "Centri di costo", "ca0 -4", "SF"
Item_06 = "Commesse", "ca0 -5", "SF"
Item_07 = "Fasi", "ca0 -6", "SF"
Item_08 = "Responsabili commessa", "ca0 -0 RSP", "F"
Item_09 = "Tipi Lavoro", "ca0 -0 TPL", "F"
[CIMENU_003]
Caption = "Rilevazione Ore"