Commit Generale Post terremoto
git-svn-id: svn://10.65.10.50/branches/R_10_00@22666 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
41582a974e
commit
4be3336e19
@ -2059,7 +2059,7 @@ bool TCespite::calc_amm(int tipo_sit, const TDate& data_limite,
|
|||||||
log(FR("* Inizio calcolo situazione %d cespite %s"), tipo_sit, (const char*)idcespite);
|
log(FR("* Inizio calcolo situazione %d cespite %s"), tipo_sit, (const char*)idcespite);
|
||||||
|
|
||||||
#ifdef DBG
|
#ifdef DBG
|
||||||
if (tipo_sit == 1 && atol(idcespite) == 2004049L)
|
if (tipo_sit == 1 && atol(idcespite) == 1362)
|
||||||
tipo_sit = 1; // Put your breakpoint here
|
tipo_sit = 1; // Put your breakpoint here
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -94,6 +94,8 @@ protected:
|
|||||||
bool genera_nomi_output(const char* nome, TFilename& txt, TFilename& tmp) const;
|
bool genera_nomi_output(const char* nome, TFilename& txt, TFilename& tmp) const;
|
||||||
bool salva_recordset(TRecordset& recset, const char* nome) const;
|
bool salva_recordset(TRecordset& recset, const char* nome) const;
|
||||||
bool accoda_recordset(TRecordset& recset, const char* nome) const;
|
bool accoda_recordset(TRecordset& recset, const char* nome) const;
|
||||||
|
const TString& curr_cod_list(const long codcf) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -227,6 +229,36 @@ void TFile2Txt::fill_anagrafica_cliente(const TISAM_recordset& archivio_clienti,
|
|||||||
clienti.set_fatt("CodiceFiscale", archivio_clienti.get(CLI_COFI), is_fatt);
|
clienti.set_fatt("CodiceFiscale", archivio_clienti.get(CLI_COFI), is_fatt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const TString& TFile2Txt::curr_cod_list(const long codcf) const
|
||||||
|
{
|
||||||
|
TString16 key; key.format("C|%ld", codcf);
|
||||||
|
TString4 codlist = cache().get(LF_CFVEN, key, CFV_CODLIST);
|
||||||
|
bool done = codlist.blank();
|
||||||
|
while (!done)
|
||||||
|
{
|
||||||
|
done = true;
|
||||||
|
key.format("L||||%s", (const char*)codlist);
|
||||||
|
const TRectype& rec = cache().get(LF_CONDV, key);
|
||||||
|
const TString4 nxtlist = rec.get(CONDV_CODLISSUCC);
|
||||||
|
if (nxtlist.full())
|
||||||
|
{
|
||||||
|
TDate datascad = rec.get(CONDV_VALFIN);
|
||||||
|
if (datascad.ok())
|
||||||
|
{
|
||||||
|
while (datascad.wday() >= 6)
|
||||||
|
--datascad;
|
||||||
|
if (datascad <= TDate(TODAY))
|
||||||
|
{
|
||||||
|
codlist = nxtlist;
|
||||||
|
done = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return get_tmp_string() = codlist;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//clienti: i commenti del metodo sono nella genera_cliente_txt() della ha1100 (che è la mamma di questo)
|
//clienti: i commenti del metodo sono nella genera_cliente_txt() della ha1100 (che è la mamma di questo)
|
||||||
bool TFile2Txt::genera_clienti_txt(const long da_codcli)
|
bool TFile2Txt::genera_clienti_txt(const long da_codcli)
|
||||||
{
|
{
|
||||||
@ -280,30 +312,11 @@ bool TFile2Txt::genera_clienti_txt(const long da_codcli)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TString4 codpag = archivio_clienti.get(CLI_CODPAG).as_string();
|
const TString4 codpag = archivio_clienti.get(CLI_CODPAG).as_string();
|
||||||
clienti.set("CodicePagamento", codpag.right(2));
|
clienti.set("CodicePagamento", codpag.right(2));
|
||||||
|
|
||||||
//prima moda: nel campo CodiceListino ci va il codice Campo del Contratto del cliente (listino cliente per Hardy)
|
//Nel campo CodiceListino ci va il codice del Listino Campo associato al cliente in cfven
|
||||||
/*TString query;
|
clienti.set("CodiceListino", curr_cod_list(codcf));
|
||||||
query << "USE CONDV";
|
|
||||||
query << "\nFROM TIPO=C TIPOCF=C CODCF=#CODCF";
|
|
||||||
query << "\nTO TIPO=C TIPOCF=C CODCF=#CODCF";
|
|
||||||
|
|
||||||
TISAM_recordset contratti(query);
|
|
||||||
contratti.set_var("#CODCF", archivio_clienti.get(CLI_CODCF).as_int());
|
|
||||||
if (contratti.move_last())
|
|
||||||
{
|
|
||||||
const TString& cod_contr = contratti.get(CONDV_COD).as_string();
|
|
||||||
clienti.set("CodiceListino", cod_contr);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
//seconda moda: nel campo CodiceListino ci va il codice del Listino Campo associato al cliente in cfven
|
|
||||||
TToken_string key_cfven;
|
|
||||||
key_cfven.add("C");
|
|
||||||
key_cfven.add(codcf);
|
|
||||||
const TRectype& rec_cfven = cache().get(LF_CFVEN, key_cfven);
|
|
||||||
const TString& listino_cliente = rec_cfven.get(CFV_CODLIST);
|
|
||||||
clienti.set("CodiceListino", listino_cliente);
|
|
||||||
|
|
||||||
const TString& str_sconto = archivio_clienti.get(CFV_SCONTO).as_string();
|
const TString& str_sconto = archivio_clienti.get(CFV_SCONTO).as_string();
|
||||||
clienti.set("ScontoFineFattura", hd_find_sconto(str_sconto));
|
clienti.set("ScontoFineFattura", hd_find_sconto(str_sconto));
|
||||||
@ -430,6 +443,7 @@ bool TFile2Txt::genera_sospesi_txt(const long da_codcli)
|
|||||||
//listini: i commenti del metodo sono nella genera_listino_txt() della ha1100
|
//listini: i commenti del metodo sono nella genera_listino_txt() della ha1100
|
||||||
bool TFile2Txt::genera_righelistini_txt()
|
bool TFile2Txt::genera_righelistini_txt()
|
||||||
{
|
{
|
||||||
|
const TDate oggi(TODAY);
|
||||||
TEsporta_listini_recordset righe_listini;
|
TEsporta_listini_recordset righe_listini;
|
||||||
|
|
||||||
TISAM_recordset agenti("USE AGENTI");
|
TISAM_recordset agenti("USE AGENTI");
|
||||||
@ -437,6 +451,7 @@ bool TFile2Txt::genera_righelistini_txt()
|
|||||||
|
|
||||||
TString query;
|
TString query;
|
||||||
query << "USE RCONDV";
|
query << "USE RCONDV";
|
||||||
|
query << "\nJOIN CONDV INTO TIPO=TIPO TIPOCF=TIPOCF CODCF==CODCF COD==COD";
|
||||||
query << "\nFROM TIPO=L";
|
query << "\nFROM TIPO=L";
|
||||||
query << "\nTO TIPO=L";
|
query << "\nTO TIPO=L";
|
||||||
|
|
||||||
@ -449,13 +464,18 @@ bool TFile2Txt::genera_righelistini_txt()
|
|||||||
TProgind progind(archivio_rcondv_items, "Listini...", false, true);
|
TProgind progind(archivio_rcondv_items, "Listini...", false, true);
|
||||||
for (bool ok = archivio_rcondv.move_first(); ok; ok = archivio_rcondv.move_next())
|
for (bool ok = archivio_rcondv.move_first(); ok; ok = archivio_rcondv.move_next())
|
||||||
{
|
{
|
||||||
progind.addstatus(1);
|
if (!progind.addstatus(1))
|
||||||
|
break;
|
||||||
|
|
||||||
|
const TDate datascad = archivio_rcondv.get("CONDV.VALFIN").as_date();
|
||||||
|
if (datascad.ok() && datascad < oggi)
|
||||||
|
continue;
|
||||||
|
|
||||||
righe_listini.new_rec("");
|
righe_listini.new_rec("");
|
||||||
|
|
||||||
righe_listini.set("CodiceTerminale", codage);
|
righe_listini.set("CodiceTerminale", codage);
|
||||||
righe_listini.set(RCONDV_COD, archivio_rcondv.get(RCONDV_COD));
|
righe_listini.set(RCONDV_COD, archivio_rcondv.get(RCONDV_COD));
|
||||||
TString80 codart = archivio_rcondv.get(RCONDV_CODRIGA).as_string();
|
const TString80 codart = archivio_rcondv.get(RCONDV_CODRIGA).as_string();
|
||||||
righe_listini.set(RCONDV_CODRIGA, codart);
|
righe_listini.set(RCONDV_CODRIGA, codart);
|
||||||
|
|
||||||
real prezzo = archivio_rcondv.get(RCONDV_PREZZO).as_real();
|
real prezzo = archivio_rcondv.get(RCONDV_PREZZO).as_real();
|
||||||
|
14
ha/ha2.cpp
14
ha/ha2.cpp
@ -1,10 +1,6 @@
|
|||||||
#include <xvt.h>
|
#include <xvt.h>
|
||||||
#include <checks.h>
|
|
||||||
|
|
||||||
#include "ha2.h"
|
#include "ha2.h"
|
||||||
|
|
||||||
#define usage "Error - usage : %s -{0|1}"
|
|
||||||
|
|
||||||
int main(int argc,char** argv)
|
int main(int argc,char** argv)
|
||||||
{
|
{
|
||||||
int rt = -1 ;
|
int rt = -1 ;
|
||||||
@ -12,14 +8,8 @@ int main(int argc,char** argv)
|
|||||||
|
|
||||||
switch (r)
|
switch (r)
|
||||||
{
|
{
|
||||||
case 0:
|
case 1: rt = ha2200(argc, argv) ; break; //gestione file fatture
|
||||||
rt = ha2100(argc, argv) ; break; //gestione file privat
|
default: rt = ha2100(argc, argv) ; break; //gestione file privat
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
rt = ha2200(argc, argv) ; break; //gestione file fatture
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
error_box(usage, argv[0]) ; break;
|
|
||||||
}
|
}
|
||||||
return rt;
|
return rt;
|
||||||
}
|
}
|
||||||
|
@ -1907,8 +1907,7 @@ int TSystemisamfile::update(
|
|||||||
{
|
{
|
||||||
if (newrec.len() == 0)
|
if (newrec.len() == 0)
|
||||||
{
|
{
|
||||||
if (interactive)
|
// if (interactive) error_box(FR("Il nuovo tracciato per il file %d e' vuoto"), num()); // Fastidioso per Ilaria
|
||||||
error_box(FR("Il nuovo tracciato per il file %d e' vuoto"), num());
|
|
||||||
setstatus(_istrcerr);
|
setstatus(_istrcerr);
|
||||||
return status();
|
return status();
|
||||||
}
|
}
|
||||||
|
@ -346,7 +346,8 @@ TPrintwin::TPrintwin(TTextfile& txt, const char* title)
|
|||||||
|
|
||||||
_pagelen = p.formlen();
|
_pagelen = p.formlen();
|
||||||
|
|
||||||
if (!ispdf) p.init_formlen(prwin); // Calcola offset e altre misure pagina
|
//if (ispdf) // 28/05/2012 Guy: Non capisco perchè ci fosse quesata condizione che falsava p.get_dots_per_line()
|
||||||
|
p.init_formlen(prwin); // Calcola offset e altre misure pagina
|
||||||
|
|
||||||
int abs_column=p.get_column_offset();
|
int abs_column=p.get_column_offset();
|
||||||
int segno = abs_column>=0 ? 1 : -1;
|
int segno = abs_column>=0 ? 1 : -1;
|
||||||
|
@ -37,10 +37,10 @@ bool TGenera_documenti_msk::on_field_event(TOperable_field& o, TField_event e, l
|
|||||||
switch (o.dlg())
|
switch (o.dlg())
|
||||||
{
|
{
|
||||||
case F_DTDOC:
|
case F_DTDOC:
|
||||||
if(e == fe_modify)
|
if (e == fe_modify)
|
||||||
{
|
{
|
||||||
const TDate oggi(TODAY);
|
const TDate oggi(TODAY);
|
||||||
if(get_date(F_DTDOC) <= oggi)
|
if (get_date(F_DTDOC) <= oggi)
|
||||||
{
|
{
|
||||||
warning_box(TR("Attenzione: la data documento non può essere nel passato"));
|
warning_box(TR("Attenzione: la data documento non può essere nel passato"));
|
||||||
o.reset();
|
o.reset();
|
||||||
@ -394,11 +394,7 @@ void TGenera_documenti_app::crea_riga(TToken_string& chiave, const char modpas,
|
|||||||
const TRectype& rcont = cont.row(codart);
|
const TRectype& rcont = cont.row(codart);
|
||||||
|
|
||||||
//recupero i dati di interesse dalla riga del contratto
|
//recupero i dati di interesse dalla riga del contratto
|
||||||
bool arrot;
|
const bool arrot = rcont.get_int(LVRCONDV_CALCCONS) == 1;
|
||||||
if (rcont.get_int(LVRCONDV_CALCCONS) == 1)
|
|
||||||
arrot = true;
|
|
||||||
else
|
|
||||||
arrot = false;
|
|
||||||
|
|
||||||
const real conguaglio = rcont.get_real(LVRCONDV_QTACONG);
|
const real conguaglio = rcont.get_real(LVRCONDV_QTACONG);
|
||||||
real& qta = *(real*)_quantita.objptr(chiave);
|
real& qta = *(real*)_quantita.objptr(chiave);
|
||||||
@ -480,8 +476,8 @@ void TGenera_documenti_app::crea_riga(TToken_string& chiave, const char modpas,
|
|||||||
|
|
||||||
//scrivo il magazzino
|
//scrivo il magazzino
|
||||||
|
|
||||||
TCausale_magazzino rit(caudt.causale_ritiro());
|
const TCausale_magazzino rit(caudt.causale_ritiro());
|
||||||
TCausale_magazzino con(caudt.causale_consegna());
|
const TCausale_magazzino con(caudt.causale_consegna());
|
||||||
|
|
||||||
TString8 magazzino;
|
TString8 magazzino;
|
||||||
TString8 magazzinoc;
|
TString8 magazzinoc;
|
||||||
@ -521,7 +517,7 @@ void TGenera_documenti_app::crea_riga(TToken_string& chiave, const char modpas,
|
|||||||
const TString4 codcau = cau.caucol().empty() ? cau.codice() : cau.caucol();
|
const TString4 codcau = cau.caucol().empty() ? cau.codice() : cau.caucol();
|
||||||
rdoc.put(RDOC_CODAGG1, codcau);
|
rdoc.put(RDOC_CODAGG1, codcau);
|
||||||
|
|
||||||
if(cau.is_consegna())
|
if (cau.is_consegna())
|
||||||
{
|
{
|
||||||
const real quantita_noarr = qta - conguaglio;
|
const real quantita_noarr = qta - conguaglio;
|
||||||
real quantita_arr = quantita_noarr > ZERO ? quantita_noarr : ZERO;
|
real quantita_arr = quantita_noarr > ZERO ? quantita_noarr : ZERO;
|
||||||
@ -532,6 +528,7 @@ void TGenera_documenti_app::crea_riga(TToken_string& chiave, const char modpas,
|
|||||||
long arr = quantita_arr.integer() % ppconf.integer();
|
long arr = quantita_arr.integer() % ppconf.integer();
|
||||||
//se sforo (arr > 0) allora calcolo quanti pezzi in più gli devo dare e aggiorno la quantità
|
//se sforo (arr > 0) allora calcolo quanti pezzi in più gli devo dare e aggiorno la quantità
|
||||||
if (arr > 0)
|
if (arr > 0)
|
||||||
|
{
|
||||||
if (arr > ppconf.integer() * perarr / 100) //arr <= ppconf*perarr/100 -> formula calcolo congualgio di Tassan
|
if (arr > ppconf.integer() * perarr / 100) //arr <= ppconf*perarr/100 -> formula calcolo congualgio di Tassan
|
||||||
{
|
{
|
||||||
arr = ppconf.integer() - arr;
|
arr = ppconf.integer() - arr;
|
||||||
@ -540,6 +537,7 @@ void TGenera_documenti_app::crea_riga(TToken_string& chiave, const char modpas,
|
|||||||
else
|
else
|
||||||
quantita_arr -= arr;
|
quantita_arr -= arr;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//scrivo le quantità
|
//scrivo le quantità
|
||||||
rdoc.put(RDOC_QTA, quantita_arr); //quantità consegnata eventualmente arrotondata
|
rdoc.put(RDOC_QTA, quantita_arr); //quantità consegnata eventualmente arrotondata
|
||||||
@ -551,7 +549,9 @@ void TGenera_documenti_app::crea_riga(TToken_string& chiave, const char modpas,
|
|||||||
//aggiorno il conguaglio sulla riga del contratto
|
//aggiorno il conguaglio sulla riga del contratto
|
||||||
//altrimenti se il record di riga contratto è vuoto aggiorno il log
|
//altrimenti se il record di riga contratto è vuoto aggiorno il log
|
||||||
if (!rcont.empty())
|
if (!rcont.empty())
|
||||||
|
{
|
||||||
aggiorna_conguaglio((TRectype&)rcont, quantita_arr - quantita_noarr);
|
aggiorna_conguaglio((TRectype&)rcont, quantita_arr - quantita_noarr);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TString str;
|
TString str;
|
||||||
|
@ -767,13 +767,11 @@ bool TGestione_bolle_msk::lv_codart_handler(TMask_field& f, KEY k)
|
|||||||
//estraggo il record corrispondente su LF_CLIFOGIAC
|
//estraggo il record corrispondente su LF_CLIFOGIAC
|
||||||
const TRecmag_lavanderie& reclav = artrec.find_rec(last_esc);
|
const TRecmag_lavanderie& reclav = artrec.find_rec(last_esc);
|
||||||
|
|
||||||
real dotod = reclav.get_real(CLIFOGIAC_DOTOD);
|
const real dotod = reclav.get_real(CLIFOGIAC_DOTOD);
|
||||||
real dotmp = reclav.get_real(CLIFOGIAC_DOTTM);
|
const real dotmp = reclav.get_real(CLIFOGIAC_DOTTM);
|
||||||
|
|
||||||
rdoc.put("DOTOD", dotod);
|
rdoc.put("DOTOD", dotod);
|
||||||
TString16 tmp;
|
msk.set(FR_JOLLY1, dotod);
|
||||||
tmp << dotod;
|
|
||||||
msk.field(FR_JOLLY1).set(tmp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rdoc.get(RDOC_CODAGG1).empty())
|
if (rdoc.get(RDOC_CODAGG1).empty())
|
||||||
@ -1332,12 +1330,17 @@ void TGestione_bolle_app::salva_conguaglio(const TDocumento_mask& mask)
|
|||||||
const TLaundry_contract cont(codcf, indsped, datadoc);
|
const TLaundry_contract cont(codcf, indsped, datadoc);
|
||||||
const int codcont = cont.get_int(LVCONDV_CODCONT);
|
const int codcont = cont.get_int(LVCONDV_CODCONT);
|
||||||
|
|
||||||
|
const bool is_buono_ritiro = mask.get(F_CODNUM) == ini_get_string(CONFIG_DITTA, "lv", "NUM_RIT(0)") &&
|
||||||
|
mask.get(F_TIPODOC) == ini_get_string(CONFIG_DITTA, "lv", "TIPODOC_RIT(0)");
|
||||||
|
|
||||||
TLocalisamfile rcondv(LF_LVRCONDV);
|
TLocalisamfile rcondv(LF_LVRCONDV);
|
||||||
|
|
||||||
FOR_EACH_DOC_ROW_BACK(d, r, row)
|
FOR_EACH_DOC_ROW_BACK(d, r, row)
|
||||||
{
|
{
|
||||||
TRiga_documento& rdoc = (TRiga_documento&)*row;
|
TRiga_documento& rdoc = (TRiga_documento&)*row;
|
||||||
|
|
||||||
|
if (!is_buono_ritiro) // 02-05-2012
|
||||||
|
{
|
||||||
const TCausale_lavanderie cau(rdoc.get(RDOC_CODAGG1));
|
const TCausale_lavanderie cau(rdoc.get(RDOC_CODAGG1));
|
||||||
if (cau.movcong())
|
if (cau.movcong())
|
||||||
{
|
{
|
||||||
@ -1349,6 +1352,7 @@ void TGestione_bolle_app::salva_conguaglio(const TDocumento_mask& mask)
|
|||||||
rcondv.put(LVRCONDV_QTACONG, rdoc.get_real(RDOC_QTAGG5));
|
rcondv.put(LVRCONDV_QTACONG, rdoc.get_real(RDOC_QTAGG5));
|
||||||
rcondv.rewrite();
|
rcondv.rewrite();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const real ritat = rdoc.get_real(RDOC_QTAGG1);
|
const real ritat = rdoc.get_real(RDOC_QTAGG1);
|
||||||
@ -1517,14 +1521,11 @@ void TGestione_bolle_app::init_modify_mode(TMask &m)
|
|||||||
|
|
||||||
//metodo che mi restituisce la giac
|
//metodo che mi restituisce la giac
|
||||||
TGiac_per_cli& TGestione_bolle_app::giacenza()
|
TGiac_per_cli& TGestione_bolle_app::giacenza()
|
||||||
{
|
{ return _giac; }
|
||||||
return _giac;
|
|
||||||
}
|
|
||||||
|
|
||||||
int lv3100( int argc, char* argv[])
|
int lv3100( int argc, char* argv[])
|
||||||
{
|
{
|
||||||
TGestione_bolle_app a;
|
TGestione_bolle_app a;
|
||||||
|
|
||||||
a.run( argc, argv, TR("Documenti di Trasporto"));
|
a.run( argc, argv, TR("Documenti di Trasporto"));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
@ -349,7 +349,7 @@ void TEvasione_ter_msk::genera_buono()
|
|||||||
const long codcab = clifo.get_long(CLI_CODCAB);const TString80 iban = clifo.get(CLI_IBAN);
|
const long codcab = clifo.get_long(CLI_CODCAB);const TString80 iban = clifo.get(CLI_IBAN);
|
||||||
|
|
||||||
//reupero la cuasale di magazzino di testata
|
//reupero la cuasale di magazzino di testata
|
||||||
const TString16 causmag = cache().get("%TIP", tipodoc, "S9");
|
const TString8 causmag = cache().get("%TIP", tipodoc, "S9");
|
||||||
|
|
||||||
//recupero i dati di interesse dal file CFVEN
|
//recupero i dati di interesse dal file CFVEN
|
||||||
const TRectype& cfven = cache().get(LF_CFVEN, key);
|
const TRectype& cfven = cache().get(LF_CFVEN, key);
|
||||||
@ -525,11 +525,8 @@ void TEvasione_ter_msk::genera_buono()
|
|||||||
dotod += (rbpre.qta_consegnata() - rbpre.qta_ritirata());
|
dotod += (rbpre.qta_consegnata() - rbpre.qta_ritirata());
|
||||||
rdoc.put("DOTOD", dotod);
|
rdoc.put("DOTOD", dotod);
|
||||||
|
|
||||||
bool dtmp = false;
|
const bool dtmp = datagen >= rcont.get_date(LVRCONDV_INDTTMP) && datagen <= rcont.get_date(LVRCONDV_FIDTTMP);
|
||||||
if (datagen >= rcont.get_date(LVRCONDV_INDTTMP) && datagen <= rcont.get_date(LVRCONDV_FIDTTMP))
|
if (dtmp)
|
||||||
dtmp = true;
|
|
||||||
|
|
||||||
if(dtmp)
|
|
||||||
{
|
{
|
||||||
rdoc.put("DOTMP", dottmp);
|
rdoc.put("DOTMP", dottmp);
|
||||||
rdoc.add("DOTMP", rbpre.qta_consegnata() - rbpre.qta_ritirata());
|
rdoc.add("DOTMP", rbpre.qta_consegnata() - rbpre.qta_ritirata());
|
||||||
@ -559,21 +556,29 @@ void TEvasione_ter_msk::genera_buono()
|
|||||||
TCausale_magazzino rit(cau.causale_ritiro());
|
TCausale_magazzino rit(cau.causale_ritiro());
|
||||||
TCausale_magazzino con(cau.causale_consegna());
|
TCausale_magazzino con(cau.causale_consegna());
|
||||||
|
|
||||||
TString8 magazzino;
|
TString8 magazzino, magazzinoc;
|
||||||
TString8 magazzinoc;
|
if (rit.get("S10").full())
|
||||||
|
|
||||||
if(rit.get("S10").full())
|
|
||||||
magazzino = rit.get("S10").mid(0,5);
|
magazzino = rit.get("S10").mid(0,5);
|
||||||
else
|
else
|
||||||
magazzino << ini_get_string(CONFIG_DITTA, "lv", "CODMAG") << ini_get_string(CONFIG_DITTA, "lv", "CODMAGN");
|
magazzino << ini_get_string(CONFIG_DITTA, "lv", "CODMAG") << ini_get_string(CONFIG_DITTA, "lv", "CODMAGN");
|
||||||
|
|
||||||
if(con.get("S10").full())
|
if (con.get("S10").full())
|
||||||
magazzinoc = con.get("S10").mid(0,5);
|
magazzinoc = con.get("S10").mid(0,5);
|
||||||
else
|
else
|
||||||
magazzinoc << ini_get_string(CONFIG_DITTA, "lv", "CODMAG") << ini_get_string(CONFIG_DITTA, "lv", "CODMAGC");
|
magazzinoc << ini_get_string(CONFIG_DITTA, "lv", "CODMAG") << ini_get_string(CONFIG_DITTA, "lv", "CODMAGC");
|
||||||
|
|
||||||
rdoc.put(RDOC_CODMAG, magazzino);
|
rdoc.put(RDOC_CODMAG, magazzino);
|
||||||
rdoc.put(RDOC_CODMAGC, magazzinoc);
|
rdoc.put(RDOC_CODMAGC, magazzinoc);
|
||||||
|
|
||||||
|
// Aggiorna conguaglio 28/05/2012
|
||||||
|
const real diff = rbpre.qta_consegnata() - rbpre.qta_dacons();
|
||||||
|
if (!diff.is_zero() && ini_get_bool(CONFIG_DITTA, "lv", "Aggcong"))
|
||||||
|
{
|
||||||
|
TLocalisamfile lvrcondv(LF_LVRCONDV);
|
||||||
|
TRectype& rcondv = (TRectype&)rcont;
|
||||||
|
rcondv.add(LVRCONDV_QTACONG, diff);
|
||||||
|
rcondv.rewrite(lvrcondv);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//salva la bolla solo se ha almeno una riga
|
//salva la bolla solo se ha almeno una riga
|
||||||
@ -603,7 +608,7 @@ void TEvasione_ter_msk::genera_buono()
|
|||||||
rbpre.set_rifbcon(rifbcon);
|
rbpre.set_rifbcon(rifbcon);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(controlla())
|
if (controlla())
|
||||||
{
|
{
|
||||||
const TString4 stato = cache().get("%TIP", ini_get_string(CONFIG_DITTA, "lv", "TIPODOC_PRE", NULL, 0), "S2").mid(2,1);
|
const TString4 stato = cache().get("%TIP", ini_get_string(CONFIG_DITTA, "lv", "TIPODOC_PRE", NULL, 0), "S2").mid(2,1);
|
||||||
bpre.put(DOC_STATO, stato);
|
bpre.put(DOC_STATO, stato);
|
||||||
@ -742,7 +747,7 @@ void TEvasione_ter_msk::registra()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i = 1; i <= doc.rows(); i++)
|
for (int i = 1; i <= doc.rows(); i++)
|
||||||
{
|
{
|
||||||
TRiga_documento& row = doc[i];
|
TRiga_documento& row = doc[i];
|
||||||
TBuono_prelievo_row rdoc(row);
|
TBuono_prelievo_row rdoc(row);
|
||||||
@ -832,7 +837,6 @@ void TEvasione_ter_msk::riempi_sheet()
|
|||||||
|
|
||||||
int TEvasione_ter_msk::arrotonda(const int quantita)
|
int TEvasione_ter_msk::arrotonda(const int quantita)
|
||||||
{
|
{
|
||||||
int perarr = ini_get_int(CONFIG_DITTA, "lv", "Perarr");
|
|
||||||
int qta = quantita;
|
int qta = quantita;
|
||||||
|
|
||||||
const TString& codart = get(FR_CODART);
|
const TString& codart = get(FR_CODART);
|
||||||
@ -860,6 +864,8 @@ int TEvasione_ter_msk::arrotonda(const int quantita)
|
|||||||
//recupero i dati di interesse dalla riga del contratto
|
//recupero i dati di interesse dalla riga del contratto
|
||||||
if (rcont.get_int(LVRCONDV_CALCCONS) == 1)
|
if (rcont.get_int(LVRCONDV_CALCCONS) == 1)
|
||||||
{
|
{
|
||||||
|
const int perarr = ini_get_int(CONFIG_DITTA, "lv", "Perarr");
|
||||||
|
|
||||||
//calcolo di quanti pezzi sforo
|
//calcolo di quanti pezzi sforo
|
||||||
long arr = quantita % ppconf;
|
long arr = quantita % ppconf;
|
||||||
|
|
||||||
@ -887,7 +893,7 @@ void TEvasione_ter_msk::spezza_riga()
|
|||||||
TToken_string chiave(key);
|
TToken_string chiave(key);
|
||||||
TQuantita_riga& qr = *(TQuantita_riga*)itm;
|
TQuantita_riga& qr = *(TQuantita_riga*)itm;
|
||||||
|
|
||||||
if((TDate)chiave.get() == oggi && !qr.get_evaso())
|
if(TDate(chiave.get()) == oggi && !qr.get_evaso())
|
||||||
{
|
{
|
||||||
real qtarit = qr.get_qta_rit();
|
real qtarit = qr.get_qta_rit();
|
||||||
real qtadacon = qr.get_qta_da_con();
|
real qtadacon = qr.get_qta_da_con();
|
||||||
@ -944,7 +950,7 @@ void TEvasione_ter_msk::evadi_da_terminale()
|
|||||||
|
|
||||||
if (rp.empty())
|
if (rp.empty())
|
||||||
{
|
{
|
||||||
warning_box(TR("Il pacco non esiste a magazzino"));
|
warning_box(TR("Il pacco %s non esiste a magazzino"), (const char*)codpacco);
|
||||||
warning_box(TR("Non è stato possibile sommare il pacco a nessuna riga del buono"));
|
warning_box(TR("Non è stato possibile sommare il pacco a nessuna riga del buono"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -954,15 +960,14 @@ void TEvasione_ter_msk::evadi_da_terminale()
|
|||||||
TToken_string riga = rp.rigabolla();
|
TToken_string riga = rp.rigabolla();
|
||||||
int numdoc = riga.get_int(3);
|
int numdoc = riga.get_int(3);
|
||||||
|
|
||||||
if(numdoc > 0)
|
if (numdoc > 0)
|
||||||
{
|
{
|
||||||
TString msg;
|
TString msg;
|
||||||
msg << "Il pacco risulta già associato al buono numero " << numdoc;
|
msg << "Il pacco risulta già associato al buono numero " << numdoc;
|
||||||
warning_box(msg);
|
warning_box(msg);
|
||||||
return;
|
return;
|
||||||
}
|
} else
|
||||||
|
if (numdoc < 0)
|
||||||
if(numdoc < 0)
|
|
||||||
{
|
{
|
||||||
TString msg;
|
TString msg;
|
||||||
msg << "Il pacco non risulta disponibile a magazzino";
|
msg << "Il pacco non risulta disponibile a magazzino";
|
||||||
|
@ -7,10 +7,8 @@ int main(int argc,char** argv)
|
|||||||
const int n = (argc > 1) ? atoi(argv[1]+1) : 0;
|
const int n = (argc > 1) ? atoi(argv[1]+1) : 0;
|
||||||
switch(n)
|
switch(n)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1 : collega_vers_rit(argc,argv); break;
|
||||||
collega_vers_rit(argc,argv); break;
|
default: SchedaPerc(argc,argv); break;
|
||||||
default:
|
|
||||||
SchedaPerc(argc,argv); break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return n < 0;
|
return n < 0;
|
||||||
|
@ -730,8 +730,8 @@ void TSchedaPercipienti::init_insert_mode(TMask& m)
|
|||||||
|
|
||||||
void TSchedaPercipienti::on_config_change()
|
void TSchedaPercipienti::on_config_change()
|
||||||
{
|
{
|
||||||
TConfig conf(CONFIG_STUDIO);
|
TConfig conf(CONFIG_STUDIO, "77");
|
||||||
_anno_dic = (int)conf.get_long(ANNO_SEL, NULL);
|
_anno_dic = conf.get_int(ANNO_SEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TSchedaPercipienti::init_query_mode(TMask& m)
|
void TSchedaPercipienti::init_query_mode(TMask& m)
|
||||||
@ -743,7 +743,7 @@ void TSchedaPercipienti::init_query_mode(TMask& m)
|
|||||||
{
|
{
|
||||||
const bool variazione = coll_variazione();
|
const bool variazione = coll_variazione();
|
||||||
_flag_cg = TRUE;
|
_flag_cg = TRUE;
|
||||||
TString16 tipo("");
|
TString4 tipo;
|
||||||
tipo << _coll._tipo;
|
tipo << _coll._tipo;
|
||||||
m.set(F_TIPOA, tipo);
|
m.set(F_TIPOA, tipo);
|
||||||
if (_coll._codanagr != 0L)
|
if (_coll._codanagr != 0L)
|
||||||
@ -795,8 +795,8 @@ void TSchedaPercipienti::init_query_mode(TMask& m)
|
|||||||
_from_modify = FALSE;
|
_from_modify = FALSE;
|
||||||
|
|
||||||
// forza il ricalcolo dell'ultimo numero disponibile
|
// forza il ricalcolo dell'ultimo numero disponibile
|
||||||
TString16 dummy(m.get(F_NPROG));
|
const TString& dummy = m.get(F_NPROG);
|
||||||
if (dummy.not_empty())
|
if (dummy.full())
|
||||||
setta_nprog(m);
|
setta_nprog(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,14 +63,13 @@ NUMBER F_CODANAGRPERC 5
|
|||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 15 8 ""
|
PROMPT 15 8 ""
|
||||||
USE LF_PERC
|
USE LF_PERC
|
||||||
JOIN LF_ANAG TO LF_PERC INTO TIPOA=TIPOA CODANAGR=CODANAGR
|
JOIN LF_ANAG INTO TIPOA=TIPOA CODANAGR=CODANAGR
|
||||||
INPUT CODDITTA F_CODDITTA SELECT
|
INPUT CODDITTA F_CODDITTA SELECT
|
||||||
INPUT TIPOA F_TIPOA SELECT
|
INPUT TIPOA F_TIPOA SELECT
|
||||||
INPUT CODANAGR F_CODANAGRPERC
|
INPUT CODANAGR F_CODANAGRPERC
|
||||||
DISPLAY "Tipo " TIPOA
|
DISPLAY "Tipo " TIPOA
|
||||||
DISPLAY "Codice " CODANAGR
|
DISPLAY "Codice " CODANAGR
|
||||||
DISPLAY "Cognome - Nome o Ragione sociale@50" LF_ANAG->RAGSOC
|
DISPLAY "Denominazione@50" LF_ANAG->RAGSOC
|
||||||
OUTPUT F_TIPOA TIPOA
|
|
||||||
OUTPUT F_CODANAGRPERC CODANAGR
|
OUTPUT F_CODANAGRPERC CODANAGR
|
||||||
OUTPUT F_RAGSOCPER LF_ANAG->RAGSOC
|
OUTPUT F_RAGSOCPER LF_ANAG->RAGSOC
|
||||||
MESSAGE COPY, F_CODANAGR
|
MESSAGE COPY, F_CODANAGR
|
||||||
@ -81,12 +80,12 @@ END
|
|||||||
NUMBER F_CODANAGRCOM 5
|
NUMBER F_CODANAGRCOM 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 15 8 ""
|
PROMPT 15 8 ""
|
||||||
USE LF_ANAG SELECT (TIPOA=#F_TIPOA)
|
USE LF_ANAG
|
||||||
INPUT TIPOA F_TIPOA
|
INPUT TIPOA F_TIPOA SELECT
|
||||||
INPUT CODANAGR F_CODANAGRCOM
|
INPUT CODANAGR F_CODANAGRCOM
|
||||||
DISPLAY "Tipo " TIPOA
|
DISPLAY "Tipo" TIPOA
|
||||||
DISPLAY "Codice " CODANAGR
|
DISPLAY "Codice" CODANAGR
|
||||||
DISPLAY "Cognome - Nome o Ragione sociale@50" RAGSOC
|
DISPLAY "Denominazione@50" RAGSOC
|
||||||
OUTPUT F_TIPOA TIPOA
|
OUTPUT F_TIPOA TIPOA
|
||||||
OUTPUT F_CODANAGRCOM CODANAGR
|
OUTPUT F_CODANAGRCOM CODANAGR
|
||||||
OUTPUT F_RAGSOCCOM RAGSOC
|
OUTPUT F_RAGSOCCOM RAGSOC
|
||||||
@ -100,14 +99,14 @@ STRING F_RAGSOCCOM 50
|
|||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 25 8 ""
|
PROMPT 25 8 ""
|
||||||
USE LF_ANAG KEY 2
|
USE LF_ANAG KEY 2
|
||||||
INPUT TIPOA F_TIPOA
|
JOIN LF_PERC INTO CODDITTA=#F_CODDITTA TIPOA=TIPOA CODANAGR==CODANAGR
|
||||||
|
INPUT TIPOA F_TIPOA SELECT
|
||||||
INPUT RAGSOC F_RAGSOCCOM
|
INPUT RAGSOC F_RAGSOCCOM
|
||||||
DISPLAY "Cognome - Nome o Ragione sociale@50" RAGSOC
|
DISPLAY "Denominazione@50" RAGSOC
|
||||||
DISPLAY "Tipo" TIPOA
|
DISPLAY "Tipo" TIPOA
|
||||||
DISPLAY "Codice" CODANAGR
|
DISPLAY "Codice" CODANAGR
|
||||||
OUTPUT F_RAGSOCCOM RAGSOC
|
DISPLAY "Percipiente" LF_PERC->CODANAGR
|
||||||
OUTPUT F_CODANAGRCOM CODANAGR
|
COPY OUTPUT F_CODANAGRCOM
|
||||||
OUTPUT F_TIPOA TIPOA
|
|
||||||
ADD RUN BA4 -1
|
ADD RUN BA4 -1
|
||||||
MESSAGE COPY, F_RAGSOCPER
|
MESSAGE COPY, F_RAGSOCPER
|
||||||
GROUP 1
|
GROUP 1
|
||||||
@ -116,15 +115,12 @@ END
|
|||||||
STRING F_RAGSOCPER 50
|
STRING F_RAGSOCPER 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 25 8 ""
|
PROMPT 25 8 ""
|
||||||
USE LF_ANAG KEY 2
|
USE LF_ANAG KEY 2 SELECT LF_PERC->CODANAGR!=""
|
||||||
INPUT TIPOA F_TIPOA
|
JOIN LF_PERC INTO CODDITTA=#F_CODDITTA TIPOA=TIPOA CODANAGR==CODANAGR
|
||||||
|
INPUT TIPOA F_TIPOA SELECT
|
||||||
INPUT RAGSOC F_RAGSOCPER
|
INPUT RAGSOC F_RAGSOCPER
|
||||||
DISPLAY "Cognome - Nome o Ragione sociale@50" RAGSOC
|
COPY DISPLAY F_RAGSOCCOM
|
||||||
DISPLAY "Tipo" TIPOA
|
COPY OUTPUT F_CODANAGRPERC
|
||||||
DISPLAY "Codice" CODANAGR
|
|
||||||
OUTPUT F_RAGSOCPER RAGSOC
|
|
||||||
OUTPUT F_CODANAGRPERC CODANAGR
|
|
||||||
OUTPUT F_TIPOA TIPOA
|
|
||||||
ADD RUN BA4 -1
|
ADD RUN BA4 -1
|
||||||
GROUP 2
|
GROUP 2
|
||||||
END
|
END
|
||||||
|
@ -686,7 +686,7 @@ TTracciato770::TTracciato770(char tipo) : _tipo(tipo)
|
|||||||
if (tipo == 'A')
|
if (tipo == 'A')
|
||||||
{
|
{
|
||||||
add_filler(2, 14); // 2
|
add_filler(2, 14); // 2
|
||||||
add_field("Codice fornitura", NU, 16, 5); // 3
|
add_field("Codice fornitura", AN, 16, 5); // 3
|
||||||
add_field("Tipo fornitore", NU, 21, 2); // 4
|
add_field("Tipo fornitore", NU, 21, 2); // 4
|
||||||
add_field("Codice fiscale del fornitore", CF, 23, 16);
|
add_field("Codice fiscale del fornitore", CF, 23, 16);
|
||||||
add_filler(39, 483);
|
add_filler(39, 483);
|
||||||
@ -1368,45 +1368,6 @@ bool TTrasferimento770::append_record_b()
|
|||||||
|
|
||||||
rec.set(100, 0); // situazioni particolari: vale sempre 0
|
rec.set(100, 0); // situazioni particolari: vale sempre 0
|
||||||
|
|
||||||
/*rec.set(110, cod_fis_dic());
|
|
||||||
rec.set(111, 1); //codice carica del rappresentante (vale tra 1 e 15 ma non 10; messo a 1 per ipotesi)
|
|
||||||
rec.set(115, _ragsoc_dic.left(30)); //cognome rappresentante
|
|
||||||
rec.set(116, _ragsoc_dic.mid(30)); //nome rappresentante
|
|
||||||
rec.set(117, "M"); //sesso del rappresentante
|
|
||||||
|
|
||||||
rec.set(, rec_comres.get(COM_DENCOM));
|
|
||||||
rec.set(, rec_comres.get(COM_PROVCOM));
|
|
||||||
rec.set(, rec_anagr.get(ANA_COMRES));
|
|
||||||
rec.set(, rec_anagr.get(ANA_CAPRES));
|
|
||||||
|
|
||||||
TString80 indirizzo = rec_anagr.get(ANA_INDRES);
|
|
||||||
indirizzo.strip_double_spaces(); indirizzo.trim();
|
|
||||||
TString8 tipologia;
|
|
||||||
const int spazio = indirizzo.find(' ');
|
|
||||||
if (spazio > 0 && spazio < 16) // Lunghezza accettabile per TString16 successiva
|
|
||||||
{
|
|
||||||
TString16 t = indirizzo.left(spazio);
|
|
||||||
t.trim(); t.upper();
|
|
||||||
if (t == "C.LE" || t == "CALLE") tipologia = "CALLE"; else
|
|
||||||
if (t == "C.SO" || t == "CORSO") tipologia = "CORSO"; else
|
|
||||||
if (t == "L.GO" || t == "LARGO") tipologia = "LARGO"; else
|
|
||||||
if (t == "P.CO" || t == "PARCO") tipologia = "PARCO"; else
|
|
||||||
if (t == "P.ZA" || t == "PIAZZA") tipologia = "PIAZZA"; else
|
|
||||||
if (t == "S.DA" || t == "STRADA") tipologia = "STRADA"; else
|
|
||||||
if (t == "V." || t == "VIA") tipologia = "VIA"; else
|
|
||||||
if (t == "V.LE" || t == "VIALE") tipologia = "VIALE"; else
|
|
||||||
if (t == "V.LO" || t == "VICOLO") tipologia = "VICOLO";
|
|
||||||
}
|
|
||||||
if (tipologia.full())
|
|
||||||
indirizzo = indirizzo.mid(spazio+1);
|
|
||||||
else
|
|
||||||
tipologia = "VIA";
|
|
||||||
indirizzo.cut(35);
|
|
||||||
|
|
||||||
rec.set(101, tipologia);
|
|
||||||
rec.set(102, indirizzo);
|
|
||||||
rec.set(103, rec_anagr.get(ANA_CIVRES));*/
|
|
||||||
|
|
||||||
const TRectype& rec_nditte = _cache770.get(LF_NDITTE, _cod_ditta);
|
const TRectype& rec_nditte = _cache770.get(LF_NDITTE, _cod_ditta);
|
||||||
|
|
||||||
key.cut(0) << "F|" << rec_nditte.get(NDT_RAPPR);
|
key.cut(0) << "F|" << rec_nditte.get(NDT_RAPPR);
|
||||||
@ -1533,7 +1494,7 @@ bool TTrasferimento770::split(const char* path)
|
|||||||
if (_save_headers)
|
if (_save_headers)
|
||||||
{
|
{
|
||||||
rec.tipo_record('A'); // Compila record di testata A
|
rec.tipo_record('A'); // Compila record di testata A
|
||||||
rec.set(3, "77S11"); // Codice fornitura
|
rec.set(3, "77S12"); // Codice fornitura
|
||||||
rec.set(4, 1); // Tipo fornitore 01 = Soggetto che invia la propria dichiarazione
|
rec.set(4, 1); // Tipo fornitore 01 = Soggetto che invia la propria dichiarazione
|
||||||
rec.set(5, cod_fis_dic()); // Codice fiscale del fornitore
|
rec.set(5, cod_fis_dic()); // Codice fiscale del fornitore
|
||||||
if (volumes > 1)
|
if (volumes > 1)
|
||||||
|
@ -188,8 +188,11 @@ bool TGestione_provv_app::datascad_handler(TMask_field& f, KEY key)
|
|||||||
bool TGestione_provv_app::enable_handler(TMask_field& f, KEY key)
|
bool TGestione_provv_app::enable_handler(TMask_field& f, KEY key)
|
||||||
{
|
{
|
||||||
if (key == K_SPACE)
|
if (key == K_SPACE)
|
||||||
f.mask().enable(-5);
|
{
|
||||||
return TRUE;
|
TMask& m = f.mask();
|
||||||
|
m.enable(-5, !m.field(F_PROVVPAG).active());
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TGestione_provv_app::imprata_handler(TMask_field& f, KEY key)
|
bool TGestione_provv_app::imprata_handler(TMask_field& f, KEY key)
|
||||||
|
@ -346,6 +346,7 @@ END
|
|||||||
BUTTON DLG_ENABLE 10 2
|
BUTTON DLG_ENABLE 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -44 -1 "~Abilita"
|
PROMPT -44 -1 "~Abilita"
|
||||||
|
PICTURE TOOL_EDIT
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
10229=print.ico
|
10229=print.ico
|
||||||
10230=convoc.ico
|
10230=convoc.ico
|
||||||
10231=setup.ico
|
10231=setup.ico
|
||||||
10232=moka.ico
|
10232=hardy.ico
|
||||||
10233=day_work.ico
|
10233=day_work.ico
|
||||||
10234=day_holy.ico
|
10234=day_holy.ico
|
||||||
10235=day_full.ico
|
10235=day_full.ico
|
||||||
|
@ -125,7 +125,8 @@ OEM=7
|
|||||||
Owner=Salvatore Durante
|
Owner=Salvatore Durante
|
||||||
OEM=8
|
OEM=8
|
||||||
[802]
|
[802]
|
||||||
Owner=CONNEXXA s.r.l.
|
pc0001 -*=31-12-3000
|
||||||
|
Owner=Salvatore Durante
|
||||||
OEM=8
|
OEM=8
|
||||||
[803]
|
[803]
|
||||||
Owner=Meta Calabria (ex-prassi calabria)
|
Owner=Meta Calabria (ex-prassi calabria)
|
||||||
@ -476,6 +477,7 @@ OEM=1
|
|||||||
Owner=CONFINDUSTRIA Piacenza
|
Owner=CONFINDUSTRIA Piacenza
|
||||||
OEM=1
|
OEM=1
|
||||||
[6298]
|
[6298]
|
||||||
|
*=15-04-2012
|
||||||
Owner=Cosea scrl
|
Owner=Cosea scrl
|
||||||
OEM=1
|
OEM=1
|
||||||
[6299]
|
[6299]
|
||||||
@ -509,6 +511,7 @@ OEM=1
|
|||||||
Owner=MEDIA PADANIA SRL
|
Owner=MEDIA PADANIA SRL
|
||||||
OEM=1
|
OEM=1
|
||||||
[6342]
|
[6342]
|
||||||
|
*=15-05-2012
|
||||||
Owner=ACTUAL SPOTTI SRL
|
Owner=ACTUAL SPOTTI SRL
|
||||||
OEM=1
|
OEM=1
|
||||||
[6349]
|
[6349]
|
||||||
@ -694,9 +697,12 @@ OEM=0
|
|||||||
Owner=IMM.RE MONTE GRAPPA PRIMA SRL
|
Owner=IMM.RE MONTE GRAPPA PRIMA SRL
|
||||||
OEM=1
|
OEM=1
|
||||||
[7040]
|
[7040]
|
||||||
*=08-02-2011
|
*=08-02-2012
|
||||||
Owner=Folloni gianluca
|
Owner=Folloni gianluca
|
||||||
OEM=0
|
OEM=0
|
||||||
|
[7055]
|
||||||
|
Owner=Laboratorio Casella
|
||||||
|
OEM=7
|
||||||
[7061]
|
[7061]
|
||||||
ps0872 -?=31-12-3000
|
ps0872 -?=31-12-3000
|
||||||
Owner=Realplast
|
Owner=Realplast
|
||||||
@ -827,13 +833,14 @@ OEM=1
|
|||||||
Owner=SO.F.IND S.R.L.
|
Owner=SO.F.IND S.R.L.
|
||||||
OEM=1
|
OEM=1
|
||||||
[7187]
|
[7187]
|
||||||
Owner=BOLZI BRUNO
|
Owner=BRUNO BOLZI SRL
|
||||||
OEM=6
|
OEM=6
|
||||||
[7188]
|
[7188]
|
||||||
Owner=CISLAGHI ARREDAMENTI S.R.L.
|
Owner=CISLAGHI ARREDAMENTI S.R.L.
|
||||||
OEM=1
|
OEM=1
|
||||||
[7191]
|
[7191]
|
||||||
Owner=Garlassi
|
Owner=GARLASSI FRATELLI & C. s.n.c.
|
||||||
|
OEM=6
|
||||||
[7196]
|
[7196]
|
||||||
Owner=Milano AD SRL
|
Owner=Milano AD SRL
|
||||||
OEM=1
|
OEM=1
|
||||||
@ -859,11 +866,13 @@ Owner=Soc.Coop.OP Monte (Prassi Calabria)
|
|||||||
OEM=8
|
OEM=8
|
||||||
[7225]
|
[7225]
|
||||||
Owner=LA NUOVA COPERTURA SRL
|
Owner=LA NUOVA COPERTURA SRL
|
||||||
|
OEM=1
|
||||||
[7232]
|
[7232]
|
||||||
Owner=Impresa Giardino Srl
|
Owner=Impresa Giardino Srl
|
||||||
OEM=7
|
OEM=7
|
||||||
[7241]
|
[7241]
|
||||||
Owner=Minigomme
|
Owner=Minigomme
|
||||||
|
OEM=1
|
||||||
MustCall=22-09-2011
|
MustCall=22-09-2011
|
||||||
[7242]
|
[7242]
|
||||||
Owner=TOP PARTIES GEST. SERVIZI SRL
|
Owner=TOP PARTIES GEST. SERVIZI SRL
|
||||||
@ -937,7 +946,7 @@ OEM=1
|
|||||||
Owner=IMMOBILIARE GIARDINO SAS
|
Owner=IMMOBILIARE GIARDINO SAS
|
||||||
OEM=1
|
OEM=1
|
||||||
[7319]
|
[7319]
|
||||||
Owner=IST.SUORE DELLA SACRA FAMIGLIA
|
Owner=ENTE DI FORMAZIONE SACRA FAMIGLIA
|
||||||
OEM=1
|
OEM=1
|
||||||
[7320]
|
[7320]
|
||||||
Owner=CENTRO PER LA CULTURA
|
Owner=CENTRO PER LA CULTURA
|
||||||
@ -2146,6 +2155,9 @@ OEM=1
|
|||||||
Owner=Serpelloni SEC
|
Owner=Serpelloni SEC
|
||||||
OEM=0
|
OEM=0
|
||||||
MustCall=31-12-2011
|
MustCall=31-12-2011
|
||||||
|
[8546]
|
||||||
|
Owner=Extra
|
||||||
|
OEM=7
|
||||||
[8550]
|
[8550]
|
||||||
Owner=Carla srl
|
Owner=Carla srl
|
||||||
OEM=7
|
OEM=7
|
||||||
@ -3071,7 +3083,7 @@ OEM=8
|
|||||||
Owner=O.P. MONTE SOC. COOP. A R.L.
|
Owner=O.P. MONTE SOC. COOP. A R.L.
|
||||||
OEM=8
|
OEM=8
|
||||||
[8908]
|
[8908]
|
||||||
Owner=Levilsud di Marinaro
|
Owner=L'EDILSUD DI MARINARO A. & C. s.a.s.
|
||||||
OEM=8
|
OEM=8
|
||||||
[8909]
|
[8909]
|
||||||
Owner=Abramo Holding spa
|
Owner=Abramo Holding spa
|
||||||
@ -3122,7 +3134,7 @@ OEM=1
|
|||||||
Owner=ROSSINO SRL
|
Owner=ROSSINO SRL
|
||||||
OEM=1
|
OEM=1
|
||||||
[8926]
|
[8926]
|
||||||
Owner=Idealfiocchi
|
Owner=IDEALFIOCCHI SNC DI ORLANDELLI DAVIDE & C.
|
||||||
OEM=1
|
OEM=1
|
||||||
[8928]
|
[8928]
|
||||||
Owner=CO.MA.RI SOCIETA' COOPERATIVA
|
Owner=CO.MA.RI SOCIETA' COOPERATIVA
|
||||||
@ -3139,20 +3151,20 @@ OEM=1
|
|||||||
Owner=CO.MA.RI SOCIETA' COOPERATIVA
|
Owner=CO.MA.RI SOCIETA' COOPERATIVA
|
||||||
OEM=1
|
OEM=1
|
||||||
[8936]
|
[8936]
|
||||||
Owner=EMME&E
|
Owner=EMME & E srl
|
||||||
OEM=1
|
OEM=1
|
||||||
[8937]
|
[8937]
|
||||||
Owner=EMME&E
|
Owner=EMME & E srl
|
||||||
OEM=1
|
OEM=1
|
||||||
[8938]
|
[8938]
|
||||||
Owner=Produs
|
Owner=PRODUS DI GIUSEPPE STILO E C. SNC
|
||||||
OEM=1
|
OEM=1
|
||||||
[8939]
|
[8939]
|
||||||
Owner=SCAI
|
Owner=S.C.A.I. SRL
|
||||||
OEM=1
|
OEM=1
|
||||||
[8940]
|
[8940]
|
||||||
Owner=Interactive (Tetractis)
|
Owner=IMPREMED S.p.A.
|
||||||
OEM=1
|
OEM=4
|
||||||
[8941]
|
[8941]
|
||||||
Owner=HABILITA S.P.A
|
Owner=HABILITA S.P.A
|
||||||
OEM=1
|
OEM=1
|
||||||
@ -3232,12 +3244,27 @@ OEM=8
|
|||||||
[8972]
|
[8972]
|
||||||
Owner=Abramo Real Estate
|
Owner=Abramo Real Estate
|
||||||
OEM=8
|
OEM=8
|
||||||
|
[8973]
|
||||||
|
Owner=Impremed
|
||||||
|
OEM=4
|
||||||
|
[8974]
|
||||||
|
Owner=Barranca Antonio
|
||||||
|
OEM=8
|
||||||
|
[8975]
|
||||||
|
Owner=Petrolo Santina
|
||||||
|
OEM=8
|
||||||
[8989]
|
[8989]
|
||||||
Owner=Guimatrag
|
Owner=Guimatrag
|
||||||
OEM=0
|
OEM=0
|
||||||
[8990]
|
[8990]
|
||||||
Owner=BUSTAPLAST FLEXIBLE PACKAGING SRL
|
Owner=BUSTAPLAST FLEXIBLE PACKAGING SRL
|
||||||
OEM=1
|
OEM=1
|
||||||
|
[8991]
|
||||||
|
Owner=Verga
|
||||||
|
OEM=1
|
||||||
|
[8992]
|
||||||
|
Owner=Eurobica
|
||||||
|
OEM=1
|
||||||
[8993]
|
[8993]
|
||||||
Owner=CATTANEO CARNI & CO.MA.RI.
|
Owner=CATTANEO CARNI & CO.MA.RI.
|
||||||
OEM=1
|
OEM=1
|
||||||
@ -3247,18 +3274,48 @@ OEM=0
|
|||||||
[8995]
|
[8995]
|
||||||
Owner=Associazione Industriali Piacenza
|
Owner=Associazione Industriali Piacenza
|
||||||
OEM=1
|
OEM=1
|
||||||
|
[8997]
|
||||||
|
Owner=Folloni Gianluca
|
||||||
|
OEM=1
|
||||||
[8998]
|
[8998]
|
||||||
Owner=BIESSE SOCIETA' COOPERATIVA
|
Owner=BIESSE SOCIETA' COOPERATIVA
|
||||||
OEM=1
|
OEM=1
|
||||||
[8999]
|
[8999]
|
||||||
Owner=CO.GE.F. SRL SOC.UNIPERSONALE
|
Owner=CO.GE.F. SRL SOC.UNIPERSONALE
|
||||||
OEM=1
|
OEM=1
|
||||||
|
[9000]
|
||||||
|
Owner=SICIM S.p.A.
|
||||||
|
OEM=1
|
||||||
|
[9001]
|
||||||
|
Owner=SICIM S.p.A.
|
||||||
|
OEM=1
|
||||||
|
[9002]
|
||||||
|
Owner=SICIM S.p.A.
|
||||||
|
OEM=1
|
||||||
|
[9003]
|
||||||
|
Owner=SICIM S.p.A.
|
||||||
|
OEM=1
|
||||||
|
[9004]
|
||||||
|
Owner=Consorzio GET GROUP
|
||||||
|
OEM=1
|
||||||
[9005]
|
[9005]
|
||||||
Owner=Scuola Materna di Prato di Correggio
|
Owner=Scuola Materna di Prato di Correggio
|
||||||
OEM=1
|
OEM=1
|
||||||
|
[9006]
|
||||||
|
Owner=Actual Spotti S.R.L.
|
||||||
|
OEM=1
|
||||||
|
[9007]
|
||||||
|
Owner=CO.SE.A.
|
||||||
|
OEM=1
|
||||||
|
[9008]
|
||||||
|
Owner=New Life
|
||||||
|
OEM=1
|
||||||
[9020]
|
[9020]
|
||||||
Owner=G.G. Trasporti s.r.l.
|
Owner=G.G. Trasporti s.r.l.
|
||||||
OEM=1
|
OEM=1
|
||||||
|
[9022]
|
||||||
|
Owner=SICIM SUCCURSAL DE ESPANA
|
||||||
|
OEM=1
|
||||||
[9023]
|
[9023]
|
||||||
Owner=Barbarini
|
Owner=Barbarini
|
||||||
OEM=1
|
OEM=1
|
||||||
@ -3266,7 +3323,7 @@ OEM=1
|
|||||||
Owner=F.C.F. New Construction Nautica srl
|
Owner=F.C.F. New Construction Nautica srl
|
||||||
OEM=1
|
OEM=1
|
||||||
[9025]
|
[9025]
|
||||||
Owner=Barbarini
|
Owner=BARBARINI & C. SRL
|
||||||
OEM=1
|
OEM=1
|
||||||
[9999]
|
[9999]
|
||||||
pd0300 -0=31-12-3000
|
pd0300 -0=31-12-3000
|
||||||
|
@ -682,11 +682,11 @@ void CampoWizardPage4::OnSSAPick(wxCommandEvent& e)
|
|||||||
const int nSerial = wxAtoi(strSerial);
|
const int nSerial = wxAtoi(strSerial);
|
||||||
if (nSerial > 1000 && nSerial < 10000)
|
if (nSerial > 1000 && nSerial < 10000)
|
||||||
{
|
{
|
||||||
wxString path("./SSAGetInfo.exe -nome ");
|
wxString path("./SSAGetInfo.exe -nome c:/");
|
||||||
path << strSerial;
|
path << strSerial;
|
||||||
wxExecute(path, wxEXEC_SYNC);
|
wxExecute(path, wxEXEC_SYNC);
|
||||||
strSerial += wxT(".ssax");
|
strSerial += wxT(".ssax");
|
||||||
if (wxFileName::FileExists(strSerial))
|
if (wxFileName::FileExists(path))
|
||||||
{
|
{
|
||||||
wxString msg = _T("Spedire il file ") + strSerial + _(" a abilitazioni_software@sirio-is.it\nper ottenere il file della licenza da copiare nella cartella di installazione.");
|
wxString msg = _T("Spedire il file ") + strSerial + _(" a abilitazioni_software@sirio-is.it\nper ottenere il file della licenza da copiare nella cartella di installazione.");
|
||||||
MessageBox(msg);
|
MessageBox(msg);
|
||||||
@ -855,7 +855,7 @@ int CampoWizardPage4::DongleTest()
|
|||||||
|
|
||||||
if (serno == 0xFFFF)
|
if (serno == 0xFFFF)
|
||||||
{
|
{
|
||||||
wxString strSSA = wxFindFirstFile("*.ssax");
|
wxString strSSA = wxFindFirstFile("c:\\*.ssax");
|
||||||
if (!strSSA.IsEmpty())
|
if (!strSSA.IsEmpty())
|
||||||
{
|
{
|
||||||
strSSA = strSSA.After('\\');
|
strSSA = strSSA.After('\\');
|
||||||
|
@ -377,7 +377,6 @@ int TMotore_application::read( TMask& m )
|
|||||||
|
|
||||||
mask.reset_father_rows();
|
mask.reset_father_rows();
|
||||||
|
|
||||||
|
|
||||||
doc() = (TDocumento &)_rel->curr();
|
doc() = (TDocumento &)_rel->curr();
|
||||||
mask.update_father_rows(false);
|
mask.update_father_rows(false);
|
||||||
|
|
||||||
|
@ -1511,7 +1511,7 @@ void TMask_generator::genera( const TString& profilo )
|
|||||||
|
|
||||||
_m->control( T_BOTTONE, DLG_PREVIEW, 202 );
|
_m->control( T_BOTTONE, DLG_PREVIEW, 202 );
|
||||||
_m->begin( );
|
_m->begin( );
|
||||||
_m->prompt( 5, 1, "Anteprima" );
|
_m->prompt( 5, 1, "Antepr." );
|
||||||
_m->picture(TOOL_PREVIEW);
|
_m->picture(TOOL_PREVIEW);
|
||||||
_m->end( );
|
_m->end( );
|
||||||
|
|
||||||
@ -1548,7 +1548,7 @@ void TMask_generator::genera( const TString& profilo )
|
|||||||
|
|
||||||
_m->control( T_BOTTONE, DLG_PREVREC, 202 );
|
_m->control( T_BOTTONE, DLG_PREVREC, 202 );
|
||||||
_m->begin( );
|
_m->begin( );
|
||||||
_m->prompt( 9, 1, "Indietro");
|
_m->prompt( 9, 1, "Prec.");
|
||||||
_m->message( "EXIT,305" );
|
_m->message( "EXIT,305" );
|
||||||
_m->picture(TOOL_PREVREC);
|
_m->picture(TOOL_PREVREC);
|
||||||
_m->end( );
|
_m->end( );
|
||||||
@ -1562,7 +1562,7 @@ void TMask_generator::genera( const TString& profilo )
|
|||||||
|
|
||||||
_m->control( T_BOTTONE, DLG_NEXTREC, 202 );
|
_m->control( T_BOTTONE, DLG_NEXTREC, 202 );
|
||||||
_m->begin( );
|
_m->begin( );
|
||||||
_m->prompt( 11, 1, "Avanti");
|
_m->prompt( 11, 1, "Succ.");
|
||||||
_m->message( "EXIT,306" );
|
_m->message( "EXIT,306" );
|
||||||
_m->picture(TOOL_NEXTREC);
|
_m->picture(TOOL_NEXTREC);
|
||||||
_m->end( );
|
_m->end( );
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#include <applicat.h>
|
#include <applicat.h>
|
||||||
#include <automask.h>
|
#include <automask.h>
|
||||||
#include <defmask.h>
|
#include <defmask.h>
|
||||||
#include <modaut.h>
|
#include <dongle.h>
|
||||||
#include <postman.h>
|
#include <postman.h>
|
||||||
#include <progind.h>
|
#include <progind.h>
|
||||||
#include <reprint.h>
|
#include <reprint.h>
|
||||||
@ -969,7 +969,7 @@ class TReport_doc_app : public TSkeleton_application
|
|||||||
TReport_doc_mask* _msk;
|
TReport_doc_mask* _msk;
|
||||||
|
|
||||||
int _anno;
|
int _anno;
|
||||||
TString16 _codnum; // codice numerazione / profilo
|
TString16 _codnum, _tipodoc; // codice numerazione / profilo
|
||||||
long _ndoc, _codcf;
|
long _ndoc, _codcf;
|
||||||
char _tipocf;
|
char _tipocf;
|
||||||
bool _no_print_dlg;
|
bool _no_print_dlg;
|
||||||
@ -984,9 +984,9 @@ protected:
|
|||||||
void print_trans(const char* ininame);
|
void print_trans(const char* ininame);
|
||||||
TOutput_mode key2mode(KEY k) const;
|
TOutput_mode key2mode(KEY k) const;
|
||||||
|
|
||||||
void set_next_pdf(int an, const char* cn, long nd, char tcf, long cf);
|
void set_next_pdf(const TRecordset* doc);
|
||||||
virtual bool get_next_pdf(int anno, long ditta, const char* codnum, long numdoc, long codcf, TFilename& pdf) const;
|
virtual bool get_next_pdf(int anno, long ditta, const char* codnum, long numdoc, long codcf, TFilename& pdf) const;
|
||||||
const TString& get_mail_address() const;
|
bool get_mail_address(TToken_string& to, TToken_string& cc) const;
|
||||||
virtual bool get_next_mail(TToken_string& to, TToken_string& cc, TToken_string& ccn,
|
virtual bool get_next_mail(TToken_string& to, TToken_string& cc, TToken_string& ccn,
|
||||||
TString& subj, TString& text, TToken_string& attach, short& ui) const ;
|
TString& subj, TString& text, TToken_string& attach, short& ui) const ;
|
||||||
void print_extra_copies(TReport_doc& report, const TRecordset& doc, TReport_book& book, word printed_copies) const;
|
void print_extra_copies(TReport_doc& report, const TRecordset& doc, TReport_book& book, word printed_copies) const;
|
||||||
@ -998,13 +998,24 @@ public:
|
|||||||
virtual bool destroy();
|
virtual bool destroy();
|
||||||
};
|
};
|
||||||
|
|
||||||
void TReport_doc_app::set_next_pdf(int an, const char* cn, long nd, char tcf, long cf)
|
void TReport_doc_app::set_next_pdf(const TRecordset* doc)
|
||||||
{
|
{
|
||||||
_anno = an;
|
if (doc)
|
||||||
_codnum = cn;
|
{
|
||||||
_ndoc = nd;
|
_anno = doc->get(DOC_ANNO).as_int();
|
||||||
_tipocf = tcf;
|
_codnum = doc->get(DOC_CODNUM).as_string();
|
||||||
_codcf = cf;
|
_ndoc = doc->get(DOC_NDOC).as_int();
|
||||||
|
_tipodoc= doc->get(DOC_TIPODOC).as_string();
|
||||||
|
_tipocf = doc->get(DOC_TIPOCF).as_string()[0];
|
||||||
|
_codcf = doc->get(DOC_CODCF).as_int();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_anno = 0;
|
||||||
|
_codnum = _tipodoc = "";
|
||||||
|
_ndoc = _codcf = 0L;
|
||||||
|
_tipocf = ' ';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TReport_doc_app::get_next_pdf(int anno, long ditta, const char* codnum, long ndoc, long codcf, TFilename& pdf) const
|
bool TReport_doc_app::get_next_pdf(int anno, long ditta, const char* codnum, long ndoc, long codcf, TFilename& pdf) const
|
||||||
@ -1015,11 +1026,49 @@ bool TReport_doc_app::get_next_pdf(int anno, long ditta, const char* codnum, lon
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
const TString& TReport_doc_app::get_mail_address() const
|
bool TReport_doc_app::get_mail_address(TToken_string& to, TToken_string& cc) const
|
||||||
{
|
{
|
||||||
|
if (_tipodoc.full())
|
||||||
|
{
|
||||||
|
const TTipo_documento& tipo = cached_tipodoc(_tipodoc);
|
||||||
|
TFilename report; tipo.mail_print_profile(report);
|
||||||
|
report = report.name_only();
|
||||||
|
|
||||||
|
TString8 clifo; clifo.format("%c%06ld", _tipocf, _codcf);
|
||||||
|
TISAM_recordset contacts("USE MULTIREL\nFROM COD=BACON FIRST=#CLIFO\nTO COD=BACON FIRST=#CLIFO");
|
||||||
|
contacts.set_var("#CLIFO", clifo);
|
||||||
|
|
||||||
|
TToken_string data;
|
||||||
|
for (bool ok = contacts.move_first(); ok; ok = contacts.move_next())
|
||||||
|
{
|
||||||
|
data = contacts.get("DATA").as_string();
|
||||||
|
FOR_EACH_TOKEN(data, tok)
|
||||||
|
{
|
||||||
|
if (_tipodoc.match(tok, true) || report.match(tok, true))
|
||||||
|
{
|
||||||
|
const TRectype& rub = cache().get(LF_CONTACT, contacts.get("SECOND").as_int());
|
||||||
|
TString80 mail = rub.get("MAIL");
|
||||||
|
if (mail.blank())
|
||||||
|
mail = rub.get("MAIL2");
|
||||||
|
if (mail.full())
|
||||||
|
{
|
||||||
|
if (to.blank())
|
||||||
|
to = mail;
|
||||||
|
else
|
||||||
|
cc.add(mail);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (to.blank())
|
||||||
|
{
|
||||||
TString8 key; key << _tipocf << '|' << _codcf;
|
TString8 key; key << _tipocf << '|' << _codcf;
|
||||||
const TString& maddr = cache().get(LF_CLIFO, key, CLI_DOCMAIL);
|
to = cache().get(LF_CLIFO, key, CLI_DOCMAIL);
|
||||||
return maddr;
|
}
|
||||||
|
return to.full();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TReport_doc_app::get_next_mail(TToken_string& to, TToken_string& cc, TToken_string& ccn,
|
bool TReport_doc_app::get_next_mail(TToken_string& to, TToken_string& cc, TToken_string& ccn,
|
||||||
@ -1029,8 +1078,7 @@ bool TReport_doc_app::get_next_mail(TToken_string& to, TToken_string& cc, TToken
|
|||||||
|
|
||||||
if (_ndoc > 0L)
|
if (_ndoc > 0L)
|
||||||
{
|
{
|
||||||
to = get_mail_address();
|
ok = get_mail_address(to, cc);
|
||||||
ok = to.full();
|
|
||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
TDocumento doc('D', _anno, _codnum, _ndoc);
|
TDocumento doc('D', _anno, _codnum, _ndoc);
|
||||||
@ -1104,7 +1152,7 @@ void TReport_doc_app::add_filter(TString& query, bool from) const
|
|||||||
bool TReport_doc_app::create()
|
bool TReport_doc_app::create()
|
||||||
{
|
{
|
||||||
if (!has_module(RSAUT))
|
if (!has_module(RSAUT))
|
||||||
return error_box(TR("Modulo non autorizzato"));
|
return error_box(FR("Modulo non autorizzato: %s"), dongle().module_code2desc(RSAUT));
|
||||||
|
|
||||||
_msk = new TReport_doc_mask;
|
_msk = new TReport_doc_mask;
|
||||||
return TSkeleton_application::create();
|
return TSkeleton_application::create();
|
||||||
@ -1211,12 +1259,10 @@ bool TReport_doc_app::print_loop(TRecordset& doc, TOutput_mode mode, bool is_def
|
|||||||
const TCodice_numerazione& cn = cached_numerazione(codnum);
|
const TCodice_numerazione& cn = cached_numerazione(codnum);
|
||||||
arc = cn.auto_archive();
|
arc = cn.auto_archive();
|
||||||
}
|
}
|
||||||
set_next_pdf(doc.get(DOC_ANNO).as_int(), doc.get(DOC_CODNUM).as_string(),
|
set_next_pdf(&doc);
|
||||||
doc.get(DOC_NDOC).as_int(), doc.get(DOC_TIPOCF).as_string()[0],
|
|
||||||
doc.get(DOC_CODCF).as_int());
|
|
||||||
|
|
||||||
// const bool send_mail = ( mode == out_mail || mode == out_signed_mail) && get_mail_address().full();
|
TToken_string to, cc;
|
||||||
const bool send_mail = mail_requested && get_mail_address().full();
|
const bool send_mail = mail_requested && get_mail_address(to, cc);
|
||||||
const bool paperless = send_mail || mode == out_pdf || mode == out_signed_pdf;
|
const bool paperless = send_mail || mode == out_pdf || mode == out_signed_pdf;
|
||||||
|
|
||||||
// Tenta di costruirsi il nome del report: se non stampo su carta cerco di usare un profilo con sfondo
|
// Tenta di costruirsi il nome del report: se non stampo su carta cerco di usare un profilo con sfondo
|
||||||
@ -1247,8 +1293,9 @@ bool TReport_doc_app::print_loop(TRecordset& doc, TOutput_mode mode, bool is_def
|
|||||||
mail_book->archive(NULL, signature);
|
mail_book->archive(NULL, signature);
|
||||||
|
|
||||||
TString mesg;
|
TString mesg;
|
||||||
|
TToken_string to, cc; get_mail_address(to, cc);
|
||||||
mesg << tipo.descrizione() << TR(" n. ") << doc.get(DOC_NDOC)
|
mesg << tipo.descrizione() << TR(" n. ") << doc.get(DOC_NDOC)
|
||||||
<< TR(" del ") << doc.get(DOC_DATADOC) << TR(" a ") << get_mail_address();
|
<< TR(" del ") << doc.get(DOC_DATADOC) << TR(" a ") << to;
|
||||||
mail_log.log(0, mesg);
|
mail_log.log(0, mesg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1333,7 +1380,7 @@ bool TReport_doc_app::print_loop(TRecordset& doc, TOutput_mode mode, bool is_def
|
|||||||
if (book.pages() > 0)
|
if (book.pages() > 0)
|
||||||
{
|
{
|
||||||
if (docs > 1)
|
if (docs > 1)
|
||||||
set_next_pdf(0, "", 0L, ' ', 0L); //spegne l'archiviazione nell'esportazione;non si possono archiviare più docs in uno!!!
|
set_next_pdf(NULL); //spegne l'archiviazione nell'esportazione;non si possono archiviare più docs in uno!!!
|
||||||
|
|
||||||
if (mail_log.recordset()->items() > 0)
|
if (mail_log.recordset()->items() > 0)
|
||||||
book.add(mail_log);
|
book.add(mail_log);
|
||||||
@ -1344,7 +1391,7 @@ bool TReport_doc_app::print_loop(TRecordset& doc, TOutput_mode mode, bool is_def
|
|||||||
case out_signed_pdf:
|
case out_signed_pdf:
|
||||||
{
|
{
|
||||||
TFilename pdf; pdf.tempdir();
|
TFilename pdf; pdf.tempdir();
|
||||||
pdf << SLASH << _anno <<'_' << _codnum << '_' << _ndoc;
|
pdf << SLASH << _anno << '_' << _codnum << '_' << _ndoc;
|
||||||
pdf.ext("pdf");
|
pdf.ext("pdf");
|
||||||
if (book.export_pdf(pdf, mode == out_signed_pdf))
|
if (book.export_pdf(pdf, mode == out_signed_pdf))
|
||||||
xvt_sys_goto_url(pdf, "open");
|
xvt_sys_goto_url(pdf, "open");
|
||||||
|
@ -87,8 +87,7 @@ protected: // TApplication
|
|||||||
void set_options();
|
void set_options();
|
||||||
void generate();
|
void generate();
|
||||||
public:
|
public:
|
||||||
TGenerazioneEffetti_app() {_msk = NULL; _num_sheet = NULL;}
|
TGenerazioneEffetti_app() : _msk(NULL), _num_sheet(NULL) {}
|
||||||
virtual ~TGenerazioneEffetti_app() { }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
inline TGenerazioneEffetti_app& app() { return (TGenerazioneEffetti_app&) main_app(); }
|
inline TGenerazioneEffetti_app& app() { return (TGenerazioneEffetti_app&) main_app(); }
|
||||||
@ -307,7 +306,7 @@ bool TGenerazioneEffetti_app::doc_tipo_stato_ok(TDocumento* doc)
|
|||||||
{
|
{
|
||||||
const int items = _tipi_doc.items();
|
const int items = _tipi_doc.items();
|
||||||
bool found = FALSE;
|
bool found = FALSE;
|
||||||
const TString16 tipo(doc->tipo().codice());
|
const TString4 tipo(doc->tipo().codice());
|
||||||
const char stato = doc->stato();
|
const char stato = doc->stato();
|
||||||
for (int i=0;i<items && !found;i++)
|
for (int i=0;i<items && !found;i++)
|
||||||
{
|
{
|
||||||
@ -323,8 +322,13 @@ bool TGenerazioneEffetti_app::doc_tipo_stato_ok(TDocumento* doc)
|
|||||||
int TGenerazioneEffetti_app::change_doc_status(TDocumento* doc)
|
int TGenerazioneEffetti_app::change_doc_status(TDocumento* doc)
|
||||||
// Cambia lo stato del documento
|
// Cambia lo stato del documento
|
||||||
{
|
{
|
||||||
|
int err = 0;
|
||||||
|
if (doc->stato() != _final_doc_status)
|
||||||
|
{
|
||||||
doc->stato(_final_doc_status);
|
doc->stato(_final_doc_status);
|
||||||
return doc->rewrite();
|
err = doc->rewrite();
|
||||||
|
}
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -459,10 +463,11 @@ void TGenerazioneEffetti_app::generate()
|
|||||||
set_options();
|
set_options();
|
||||||
|
|
||||||
const bool sort_by_date = _msk->get_int(F_ORDERBY) == 0;
|
const bool sort_by_date = _msk->get_int(F_ORDERBY) == 0;
|
||||||
|
const bool fast_status = _msk->get_bool(F_SPEEDSTATUS);
|
||||||
|
|
||||||
for (long i=0L; i<items;i++) // Scorre per tutte le numerazioni dello sheet
|
for (long i=0L; i<items;i++) // Scorre per tutte le numerazioni dello sheet
|
||||||
{
|
{
|
||||||
const TString8 codnum = _num_sheet->row(i).get(1);
|
const TString4 codnum = _num_sheet->row(i).get(1);
|
||||||
|
|
||||||
// Controlla se la numerazione corrente e' stata selezionata
|
// Controlla se la numerazione corrente e' stata selezionata
|
||||||
bool is_selected = _num_sheet->row_enabled(i);
|
bool is_selected = _num_sheet->row_enabled(i);
|
||||||
@ -506,14 +511,15 @@ void TGenerazioneEffetti_app::generate()
|
|||||||
}
|
}
|
||||||
|
|
||||||
TCursor doc_cur(&doc_rel, filt_expr, cursor_key, &da, &a);
|
TCursor doc_cur(&doc_rel, filt_expr, cursor_key, &da, &a);
|
||||||
|
TString msg;
|
||||||
|
|
||||||
const long cur_items = doc_cur.items(); // Scorre tutti i documenti che rientrano nell'intervallo selezionato
|
const long cur_items = doc_cur.items(); // Scorre tutti i documenti che rientrano nell'intervallo selezionato
|
||||||
if (cur_items == 0)
|
if (cur_items == 0)
|
||||||
{
|
{
|
||||||
warning_box("Non vi sono effetti da generare per il codice numerazione %s",(const char*)codnum);
|
msg << TR("Non vi sono effetti da generare per il codice numerazione ") << codnum;
|
||||||
|
xvt_dm_popup_warning(msg);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
TString msg;
|
|
||||||
msg << "Selezione documenti " << codnum;
|
msg << "Selezione documenti " << codnum;
|
||||||
if (sort_by_date)
|
if (sort_by_date)
|
||||||
{
|
{
|
||||||
@ -535,14 +541,17 @@ void TGenerazioneEffetti_app::generate()
|
|||||||
// altrimenti compone una lista dei documenti da raggruppare
|
// altrimenti compone una lista dei documenti da raggruppare
|
||||||
// - alla fine del ciclo per numerazioni scorre la lista residua e genera gli
|
// - alla fine del ciclo per numerazioni scorre la lista residua e genera gli
|
||||||
// effetti rimasti
|
// effetti rimasti
|
||||||
for (;j<cur_items;j++)
|
for (; j<cur_items; j++)
|
||||||
{
|
{
|
||||||
p.setstatus(j+1);
|
if (!p.setstatus(j+1))
|
||||||
|
break;
|
||||||
|
|
||||||
doc_cur = j;
|
doc_cur = j;
|
||||||
TDocumento* doc = new TDocumento;
|
if (doc_cur.curr().get(DOC_CODNUM) != codnum)
|
||||||
if (doc->read(doc_cur.curr()) == NOERR && // legge il documento
|
continue;
|
||||||
codnum == doc->get(DOC_CODNUM) && // patch del cazzo
|
|
||||||
doc_tipo_stato_ok(doc)) // controlla che il tipo documento e lo stato siano coerenti con la ELD selezionata
|
TDocumento* doc = new TDocumento(doc_cur.curr());
|
||||||
|
if (doc_tipo_stato_ok(doc)) // controlla che il tipo documento e lo stato siano coerenti con la ELD selezionata
|
||||||
{
|
{
|
||||||
TPagamento & pag = doc->pagamento();
|
TPagamento & pag = doc->pagamento();
|
||||||
if (pag.code().not_empty())
|
if (pag.code().not_empty())
|
||||||
@ -554,6 +563,7 @@ void TGenerazioneEffetti_app::generate()
|
|||||||
TLista_documenti lista_in,lista_out;
|
TLista_documenti lista_in,lista_out;
|
||||||
|
|
||||||
lista_in.add(doc);
|
lista_in.add(doc);
|
||||||
|
doc = NULL; // Non cancellarlo in quanto messo nella lista
|
||||||
if (!gen_eff.elabora(lista_in,lista_out,data)) // La data non serve, cosi' come la lista documenti in uscita
|
if (!gen_eff.elabora(lista_in,lista_out,data)) // La data non serve, cosi' come la lista documenti in uscita
|
||||||
gen_eff.set_writeable(FALSE);
|
gen_eff.set_writeable(FALSE);
|
||||||
|
|
||||||
@ -562,7 +572,7 @@ void TGenerazioneEffetti_app::generate()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
add_to_group_list(doc); // Aggiorna la lista degli effetti da raggruppare
|
add_to_group_list(doc); // Aggiorna la lista degli effetti da raggruppare
|
||||||
delete doc;
|
doc = NULL; // Non cancellarlo in quanto messo nella lista
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -570,16 +580,15 @@ void TGenerazioneEffetti_app::generate()
|
|||||||
int err = change_doc_status(doc); // Cambia lo stato al documento
|
int err = change_doc_status(doc); // Cambia lo stato al documento
|
||||||
if (err != NOERR)
|
if (err != NOERR)
|
||||||
warning_box("Errore %d tentando di cambiare lo stato del documento %s/%d",err,(const char*)doc->numerazione(),doc->numero());
|
warning_box("Errore %d tentando di cambiare lo stato del documento %s/%d",err,(const char*)doc->numerazione(),doc->numero());
|
||||||
delete doc;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
if (doc)
|
||||||
delete doc;
|
delete doc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Ogni elemento di _group_array è una TToken_string. Ogni elemento della TToken_string contiene
|
// Ogni elemento di _group_array è una TToken_string. Ogni elemento della TToken_string contiene
|
||||||
// la chiave per identificare il documento che fa parte di quel raggruppamento
|
// la chiave per identificare il documento che fa parte di quel raggruppamento
|
||||||
tot += gen_eff.group_bills(_group_array, false);// Setta l'elenco dei documenti per generare effetti raggruppati
|
tot += gen_eff.group_bills(_group_array, false, fast_status);// Setta l'elenco dei documenti per generare effetti raggruppati
|
||||||
|
|
||||||
if (tot > 0L)
|
if (tot > 0L)
|
||||||
message_box("Totale effetti generati: %ld", tot);
|
message_box("Totale effetti generati: %ld", tot);
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#define F_DATA_FIN 104
|
#define F_DATA_FIN 104
|
||||||
#define F_RAGGRUPPA 105
|
#define F_RAGGRUPPA 105
|
||||||
#define F_ORDERBY 106
|
#define F_ORDERBY 106
|
||||||
|
#define F_SPEEDSTATUS 107
|
||||||
|
|
||||||
#define F_ANNO 201
|
#define F_ANNO 201
|
||||||
#define F_CODNUM 202
|
#define F_CODNUM 202
|
||||||
|
@ -8,7 +8,7 @@ BEGIN
|
|||||||
PICTURE TOOL_MULTISEL
|
PICTURE TOOL_MULTISEL
|
||||||
END
|
END
|
||||||
|
|
||||||
#include <stdbar.h>
|
#include <elabar.h>
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
@ -78,7 +78,7 @@ BEGIN
|
|||||||
FLAGS "A"
|
FLAGS "A"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_CODNUM 3
|
STRING F_CODNUM 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 14 6 "Numerazione "
|
PROMPT 14 6 "Numerazione "
|
||||||
FLAGS "BU"
|
FLAGS "BU"
|
||||||
@ -131,8 +131,17 @@ END
|
|||||||
BOOLEAN F_RAGGRUPPA
|
BOOLEAN F_RAGGRUPPA
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 10 "Raggruppamento effetti"
|
PROMPT 1 10 "Raggruppamento effetti"
|
||||||
|
MESSAGE FALSE DISABLE,F_SPEEDSTATUS
|
||||||
|
MESSAGE TRUE ENABLE,F_SPEEDSTATUS
|
||||||
END
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_SPEEDSTATUS
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 11 "Cambio stato documenti veloce"
|
||||||
|
FLAGS "H"
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
@ -234,8 +234,8 @@ END
|
|||||||
SPREADSHEET F_DEFAULTS
|
SPREADSHEET F_DEFAULTS
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 5 ""
|
PROMPT 1 5 ""
|
||||||
ITEM "Campo@40"
|
ITEM "Campo@50"
|
||||||
ITEM "Valore@40"
|
ITEM "Valore@50"
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
@ -554,7 +554,7 @@ public:
|
|||||||
bool is_risorsa() const { return tipo().tipo() == RIGA_RISORSE;}
|
bool is_risorsa() const { return tipo().tipo() == RIGA_RISORSE;}
|
||||||
bool is_attrezzatura() const { return tipo().tipo() == RIGA_ATTREZZATURE;}
|
bool is_attrezzatura() const { return tipo().tipo() == RIGA_ATTREZZATURE;}
|
||||||
bool is_sconto() const {return tipo().tipo() == RIGA_SCONTI;}
|
bool is_sconto() const {return tipo().tipo() == RIGA_SCONTI;}
|
||||||
bool is_sconto_perc() const { return is_sconto() && get(RDOC_SCONTO).not_empty();}
|
bool is_sconto_perc() const { return is_sconto() && get(RDOC_SCONTO).full();}
|
||||||
bool is_omaggio() const { return tipo().tipo() == RIGA_OMAGGI;}
|
bool is_omaggio() const { return tipo().tipo() == RIGA_OMAGGI;}
|
||||||
bool is_descrizione() const { return tipo().tipo() == RIGA_DESCRIZIONI;}
|
bool is_descrizione() const { return tipo().tipo() == RIGA_DESCRIZIONI;}
|
||||||
bool is_articolo() const;
|
bool is_articolo() const;
|
||||||
@ -564,13 +564,12 @@ public:
|
|||||||
bool is_evasa() const; // Ritorna vero se la riga è evasa
|
bool is_evasa() const; // Ritorna vero se la riga è evasa
|
||||||
void checked(bool on = true) { put(RDOC_CHECKED, (bool)on); }
|
void checked(bool on = true) { put(RDOC_CHECKED, (bool)on); }
|
||||||
void unchecked() { checked(FALSE); }
|
void unchecked() { checked(FALSE); }
|
||||||
bool linked() const { return get(RDOC_DACODNUM).not_empty();}
|
bool linked() const { return get(RDOC_DACODNUM).full(); }
|
||||||
// @cmember Assegna il documento corrente
|
// @cmember Assegna il documento corrente
|
||||||
void set_doc(TDocumento * doc) { _doc = doc; }
|
void set_doc(TDocumento * doc) { _doc = doc; }
|
||||||
virtual const TDocumento & doc() const { CHECK(_doc, "Documento nullo"); return *_doc;}
|
virtual const TDocumento & doc() const { CHECK(_doc, "Documento nullo"); return *_doc;}
|
||||||
virtual bool edit(int logicnum = 0, const char * alternate_key_fields = NULL, const char* hint = NULL) const;
|
virtual bool edit(int logicnum = 0, const char * alternate_key_fields = NULL, const char* hint = NULL) const;
|
||||||
|
|
||||||
|
|
||||||
virtual void zero(const char * fieldname);
|
virtual void zero(const char * fieldname);
|
||||||
virtual void zero(char c = '\0');
|
virtual void zero(char c = '\0');
|
||||||
|
|
||||||
@ -1033,7 +1032,7 @@ public:
|
|||||||
static TAssoc_array & auto_reopen_nums() { return _auto_reopen_nums;}
|
static TAssoc_array & auto_reopen_nums() { return _auto_reopen_nums;}
|
||||||
static TAssoc_array & tipidoc_rels() { return _tipidoc_rels;}
|
static TAssoc_array & tipidoc_rels() { return _tipidoc_rels;}
|
||||||
const TAssoc_array & father_rows() const { return _father_rows;}
|
const TAssoc_array & father_rows() const { return _father_rows;}
|
||||||
void reset_father_rows() {_father_rows.destroy();}
|
void reset_father_rows() { _father_rows.destroy(); }
|
||||||
void update_father_rows(bool add = true);
|
void update_father_rows(bool add = true);
|
||||||
void save_father_rows();
|
void save_father_rows();
|
||||||
|
|
||||||
|
@ -1442,11 +1442,15 @@ const TRectype* TRiga_documento::find_original_rdoc() const
|
|||||||
key.add(get(RDOC_DAANNO));
|
key.add(get(RDOC_DAANNO));
|
||||||
key.add(get(RDOC_DAPROVV));
|
key.add(get(RDOC_DAPROVV));
|
||||||
key.add(get(RDOC_DANDOC));
|
key.add(get(RDOC_DANDOC));
|
||||||
for (int r = 1; ; r++)
|
for (int r = 0; ; r++)
|
||||||
{
|
{
|
||||||
|
if (r == 0)
|
||||||
|
key.add(id, 4);
|
||||||
|
else
|
||||||
key.add(r, 4);
|
key.add(r, 4);
|
||||||
const TRectype& rec = cache().get(LF_RIGHEDOC, key);
|
const TRectype& rec = cache().get(LF_RIGHEDOC, key);
|
||||||
if (rec.empty()) break;
|
if (r > 0 && rec.empty())
|
||||||
|
break;
|
||||||
if (rec.get_long(RDOC_IDRIGA) == id)
|
if (rec.get_long(RDOC_IDRIGA) == id)
|
||||||
return &rec;
|
return &rec;
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,11 @@
|
|||||||
#include "../cg/cg2101.h"
|
#include "../cg/cg2101.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __RECARRAY_H
|
||||||
|
#include <recarray.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TLista_documenti : public TObject // velib04
|
class TLista_documenti : public TObject // velib04
|
||||||
{
|
{
|
||||||
@ -565,7 +570,7 @@ protected:
|
|||||||
// Scrive i record array degli effetti raggruppati
|
// Scrive i record array degli effetti raggruppati
|
||||||
error_type write_groups(bool interattivo);
|
error_type write_groups(bool interattivo);
|
||||||
// Cambia lo stato dei gruppi di documenti raggruppati in effetti
|
// Cambia lo stato dei gruppi di documenti raggruppati in effetti
|
||||||
error_type change_group_status(TDocumento&, TAssoc_array&);
|
error_type change_group_status(TDocumento&, TAssoc_array&, bool bFast);
|
||||||
// Cambia lo stato del documento
|
// Cambia lo stato del documento
|
||||||
error_type change_doc_status(TDocumento&);
|
error_type change_doc_status(TDocumento&);
|
||||||
// Verifica se non ci sono stati errori
|
// Verifica se non ci sono stati errori
|
||||||
@ -575,7 +580,7 @@ public:
|
|||||||
const TDate& data_elab, bool interattivo = false);
|
const TDate& data_elab, bool interattivo = false);
|
||||||
|
|
||||||
// Effettua il raggruppamento vero e proprio degli effetti (solo se ci sono elementi nell'assoc_array passato)
|
// Effettua il raggruppamento vero e proprio degli effetti (solo se ci sono elementi nell'assoc_array passato)
|
||||||
long group_bills(TAssoc_array& group_array, bool interattivo);
|
long group_bills(TAssoc_array& group_array, bool interattivo, bool fast);
|
||||||
long bills() const { return _total_bills; }
|
long bills() const { return _total_bills; }
|
||||||
// void set_group(TAssoc_array& a) { _group_array = a; }
|
// void set_group(TAssoc_array& a) { _group_array = a; }
|
||||||
void set_writeable(const bool b) { _can_write = b; }
|
void set_writeable(const bool b) { _can_write = b; }
|
||||||
|
@ -862,10 +862,8 @@ bool TContabilizzazione::load_parameters()
|
|||||||
// il tutto.
|
// il tutto.
|
||||||
|
|
||||||
if (_search_seq->empty_items())
|
if (_search_seq->empty_items())
|
||||||
{
|
return error_box(TR("Non e' abilitata alcuna ricerca per il conto di costo/ricavo in configurazione."));
|
||||||
error_box("Non e' abilitata alcuna ricerca per il conto di costo/ricavo in configurazione.");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
_sc_enabled = conf.get_bool("GesSal","cg");
|
_sc_enabled = conf.get_bool("GesSal","cg");
|
||||||
_in_enabled = dongle().active(INAUT);
|
_in_enabled = dongle().active(INAUT);
|
||||||
_nump_cfg = conf.get_bool("RifPro","cg");
|
_nump_cfg = conf.get_bool("RifPro","cg");
|
||||||
@ -1037,7 +1035,7 @@ long TContabilizzazione::doc_contabilized(const TDocumento& doc, bool anticipo)
|
|||||||
|
|
||||||
TCausale* TContabilizzazione::get_caus(const TDocumento& doc, const int year) const
|
TCausale* TContabilizzazione::get_caus(const TDocumento& doc, const int year) const
|
||||||
{
|
{
|
||||||
TString8 codcaus;
|
TString4 codcaus;
|
||||||
TToken_string key;
|
TToken_string key;
|
||||||
|
|
||||||
if (_fld_cms_cont.full())
|
if (_fld_cms_cont.full())
|
||||||
@ -1083,8 +1081,6 @@ TCausale* TContabilizzazione::get_caus(const TDocumento& doc, const int year) co
|
|||||||
error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
|
error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
|
||||||
// Compila la testata
|
// Compila la testata
|
||||||
{
|
{
|
||||||
TRectype& mov_rec = _movimento->curr();
|
|
||||||
|
|
||||||
const bool acquisto = doc.get_char(DOC_TIPOCF) == 'F';
|
const bool acquisto = doc.get_char(DOC_TIPOCF) == 'F';
|
||||||
// Reperisce la data documento
|
// Reperisce la data documento
|
||||||
const TDate datadoc(doc.data());
|
const TDate datadoc(doc.data());
|
||||||
@ -1272,8 +1268,8 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Dati del cliente...
|
// Dati del cliente...
|
||||||
TString4 tipocf(doc.get(DOC_TIPOCF));
|
const TString4 tipocf(doc.get(DOC_TIPOCF));
|
||||||
long codcf = doc.get_long(DOC_CODCF);
|
const long codcf = doc.get_long(DOC_CODCF);
|
||||||
TString80 occas;
|
TString80 occas;
|
||||||
{
|
{
|
||||||
TLocalisamfile& cli_file = _clifo->lfile();
|
TLocalisamfile& cli_file = _clifo->lfile();
|
||||||
@ -1304,7 +1300,7 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
|
|||||||
|
|
||||||
// Codice pagamento
|
// Codice pagamento
|
||||||
const TString4 codpag(doc.get(DOC_CODPAG));
|
const TString4 codpag(doc.get(DOC_CODPAG));
|
||||||
if (sc_enabled(data_reg) || codpag.not_empty()) // La condizione di pagamento va controllata
|
if (sc_enabled(data_reg) || codpag.full()) // La condizione di pagamento va controllata
|
||||||
{ // se e' abilitato il saldaconto o se e' stata inserita
|
{ // se e' abilitato il saldaconto o se e' stata inserita
|
||||||
_cpg->put("CODTAB",codpag);
|
_cpg->put("CODTAB",codpag);
|
||||||
if (_cpg->read() != NOERR)
|
if (_cpg->read() != NOERR)
|
||||||
@ -1313,7 +1309,9 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
|
|||||||
return _error;
|
return _error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mo' riempie il record della incornata (testata)
|
// Mo' riempie il record della incornata (testata)
|
||||||
|
TRectype& mov_rec = _movimento->curr();
|
||||||
mov_rec.zero();
|
mov_rec.zero();
|
||||||
mov_rec.put(MOV_ANNOES,cod_es); mov_rec.put(MOV_NUMREG,numreg);
|
mov_rec.put(MOV_ANNOES,cod_es); mov_rec.put(MOV_NUMREG,numreg);
|
||||||
mov_rec.put(MOV_DATAREG,data_reg); mov_rec.put(MOV_DATACOMP,data_reg);
|
mov_rec.put(MOV_DATAREG,data_reg); mov_rec.put(MOV_DATACOMP,data_reg);
|
||||||
@ -2666,29 +2664,67 @@ error_type TContabilizzazione::write_scadenze(TDocumento& doc)
|
|||||||
// Scrive le scadenze. Liberamente tratto da cg2104.cpp.
|
// Scrive le scadenze. Liberamente tratto da cg2104.cpp.
|
||||||
{
|
{
|
||||||
const TRectype& head = _movimento->curr();
|
const TRectype& head = _movimento->curr();
|
||||||
const long nreg = head.get_long(MOV_NUMREG);
|
if (head.get_real(MOV_TOTDOC).is_zero())
|
||||||
|
|
||||||
// const real change(head.get_real(MOV_CAMBIO));
|
|
||||||
int anno = head.get_int(MOV_ANNOIVA);
|
|
||||||
|
|
||||||
if (head.get_real(MOV_TOTDOC) == ZERO)
|
|
||||||
return _error;
|
return _error;
|
||||||
|
|
||||||
TString16 numpart;
|
const bool is_nc = doc.is_nota_credito();
|
||||||
|
const long nreg = head.get_long(MOV_NUMREG);
|
||||||
|
int anno = head.get_int(MOV_ANNOIVA);
|
||||||
|
// const real change(head.get_real(MOV_CAMBIO));
|
||||||
|
|
||||||
|
TString8 numpart; // Max. 7 chars
|
||||||
|
|
||||||
if (_nump_cfg)
|
if (_nump_cfg)
|
||||||
|
{
|
||||||
numpart = head.get(MOV_PROTIVA);
|
numpart = head.get(MOV_PROTIVA);
|
||||||
|
if (is_nc)
|
||||||
|
{
|
||||||
|
int annorif = doc.get_int("ANNORIF");
|
||||||
|
if (annorif <= 0)
|
||||||
|
{
|
||||||
|
const TDate ddr = doc.get_date(DOC_DATADOCRIF);
|
||||||
|
annorif = ddr.year();
|
||||||
|
if (annorif <= 0)
|
||||||
|
annorif = anno;
|
||||||
|
}
|
||||||
|
TString4 codnumrif = doc.get("CODNUMRIF");
|
||||||
|
if (codnumrif.blank())
|
||||||
|
codnumrif = doc.get(DOC_CODNUM);
|
||||||
|
|
||||||
|
const TString8 numdocrif = doc.get(DOC_NUMDOCRIF);
|
||||||
|
|
||||||
|
if (numdocrif.full())
|
||||||
|
{
|
||||||
|
TToken_string keydoc;
|
||||||
|
keydoc.add(doc.get(DOC_PROVV));
|
||||||
|
keydoc.add(annorif);
|
||||||
|
keydoc.add(codnumrif);
|
||||||
|
keydoc.add(numdocrif);
|
||||||
|
const long numreg = atol(cache().get(LF_DOC, keydoc, DOC_NUMREG));
|
||||||
|
if (numreg > 0)
|
||||||
|
{
|
||||||
|
TPartite_array pa; pa.add_numreg(numreg);
|
||||||
|
const TPartita* game = pa.first();
|
||||||
|
if (game != NULL)
|
||||||
|
{
|
||||||
|
anno = game->anno();
|
||||||
|
numpart = game->numero();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
numpart = doc.get(DOC_NUMDOCRIF);
|
numpart = doc.get(DOC_NUMDOCRIF);
|
||||||
if (_caus->iva() == iva_vendite && !doc.tipo().nota_credito())
|
if (_caus->iva() == iva_vendite && !is_nc)
|
||||||
numpart.cut(0);
|
numpart.cut(0);
|
||||||
|
|
||||||
if (numpart.blank())
|
if (numpart.blank())
|
||||||
numpart = head.get(MOV_NUMDOC);
|
numpart = head.get(MOV_NUMDOC);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TDate ddr = doc.get_date(DOC_DATADOCRIF);
|
const TDate ddr = doc.get_date(DOC_DATADOCRIF);
|
||||||
if (ddr.ok())
|
if (ddr.ok())
|
||||||
anno = ddr.year();
|
anno = ddr.year();
|
||||||
}
|
}
|
||||||
@ -2894,7 +2930,7 @@ error_type TContabilizzazione::write_scadenze(TDocumento& doc)
|
|||||||
{
|
{
|
||||||
const TRiga_partite& fatt = newgame->riga(p);
|
const TRiga_partite& fatt = newgame->riga(p);
|
||||||
const TDate datadoc = fatt.get_date(PART_DATADOC);
|
const TDate datadoc = fatt.get_date(PART_DATADOC);
|
||||||
const TString16 numdoc = fatt.get(PART_NUMDOC);
|
const TString8 numdoc = fatt.get(PART_NUMDOC);
|
||||||
if (datadoc.year() == datadocrif.year() && numdoc == numdocrif)
|
if (datadoc.year() == datadocrif.year() && numdoc == numdocrif)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -125,39 +125,68 @@ void TGenerazione_effetti::display_error(TDocumento& doc)
|
|||||||
error_type TGenerazione_effetti::change_doc_status(TDocumento& doc)
|
error_type TGenerazione_effetti::change_doc_status(TDocumento& doc)
|
||||||
// Cambia lo stato del documento
|
// Cambia lo stato del documento
|
||||||
{
|
{
|
||||||
doc.stato(get("S4")[0]);
|
const char stato_finale = get("S4")[0];
|
||||||
|
if (doc.stato() != stato_finale)
|
||||||
|
{
|
||||||
|
doc.stato(stato_finale);
|
||||||
if (doc.rewrite() != NOERR)
|
if (doc.rewrite() != NOERR)
|
||||||
_error = chg_stat_error;
|
_error = chg_stat_error;
|
||||||
|
}
|
||||||
return _error;
|
return _error;
|
||||||
}
|
}
|
||||||
|
|
||||||
error_type TGenerazione_effetti::change_group_status(TDocumento& doc, TAssoc_array& group_array)
|
error_type TGenerazione_effetti::change_group_status(TDocumento& doc, TAssoc_array& group_array, bool fast)
|
||||||
// Cambia lo stato dei documenti raggruppati
|
// Cambia lo stato dei documenti raggruppati
|
||||||
{
|
{
|
||||||
const int items = group_array.items();
|
const int items = group_array.items();
|
||||||
if (items > 0)
|
if (items > 0)
|
||||||
{
|
{
|
||||||
|
TProgind pi(items, "Cambio stato documenti", false);
|
||||||
_error = no_error;
|
_error = no_error;
|
||||||
TToken_string * group_element;
|
TToken_string * group_element;
|
||||||
int i=0;
|
int i=0;
|
||||||
|
TString msg;
|
||||||
|
|
||||||
|
const char stato_finale = get_char("S4");
|
||||||
|
|
||||||
// Ciclo sugli elementi dell'assoc_array
|
// Ciclo sugli elementi dell'assoc_array
|
||||||
for (group_element = (TToken_string *) group_array.first_item(); group_element != NULL && i < items; i++,group_element = (TToken_string*)group_array.succ_item())
|
for (group_element = (TToken_string *) group_array.first_item(); group_element != NULL && i < items; i++,group_element = (TToken_string*)group_array.succ_item())
|
||||||
{
|
{
|
||||||
|
if (!pi.addstatus(1))
|
||||||
|
break;
|
||||||
|
|
||||||
group_element->restart();
|
group_element->restart();
|
||||||
const int doc_items = group_element->items();
|
const int doc_items = group_element->items();
|
||||||
for (int j=0;j<doc_items;j++)
|
for (int j=0;j<doc_items;j++)
|
||||||
{
|
{
|
||||||
TToken_string t(group_element->get(j),'$');
|
TToken_string t(group_element->get(j),'$');
|
||||||
char provv = t.get_char(0);
|
char provv = t.get_char(0);
|
||||||
int anno = t.get_int(1);
|
const int anno = t.get_int(1);
|
||||||
TString codnum(t.get(2));
|
const TString4 codnum(t.get(2));
|
||||||
long numdoc = t.get_long(3);
|
const long numdoc = t.get_long(3);
|
||||||
if (doc.read(provv,anno,codnum,numdoc) == NOERR) // Legge il documento
|
|
||||||
|
msg.cut(0) << TR("Cambio stato documento ") << codnum << ' ' << anno << '/' << numdoc;
|
||||||
|
pi.set_text(msg);
|
||||||
|
|
||||||
|
if (fast)
|
||||||
{
|
{
|
||||||
doc.put(DOC_STATO,get("S4")[0]);
|
TFast_isamfile doc(LF_DOC);
|
||||||
|
doc.put(DOC_PROVV, provv);
|
||||||
|
doc.put(DOC_ANNO, anno);
|
||||||
|
doc.put(DOC_CODNUM, codnum);
|
||||||
|
doc.put(DOC_NDOC, numdoc);
|
||||||
|
if (doc.read() == NOERR)
|
||||||
|
{
|
||||||
|
doc.put(DOC_STATO, stato_finale);
|
||||||
doc.rewrite();
|
doc.rewrite();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (doc.read(provv,anno,codnum,numdoc) == NOERR) // Legge il documento
|
||||||
|
change_doc_status(doc);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return _error;
|
return _error;
|
||||||
@ -169,29 +198,39 @@ error_type TGenerazione_effetti::write_groups(bool interattivo)
|
|||||||
int err = NOERR;
|
int err = NOERR;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
TString msg;
|
||||||
|
|
||||||
|
TProgind pi(items, "Scrittura effetti", false);
|
||||||
|
|
||||||
_error = no_error;
|
_error = no_error;
|
||||||
for (i = 0; i<items && err == NOERR; i++) // scorre gli effetti generati e li scrive su file
|
for (i = 0; i<items && err == NOERR; i++) // scorre gli effetti generati e li scrive su file
|
||||||
{
|
{
|
||||||
|
if (!pi.addstatus(1))
|
||||||
|
break;
|
||||||
|
|
||||||
TEffetto& effetto = (TEffetto&)_effetti_array[i];
|
TEffetto& effetto = (TEffetto&)_effetti_array[i];
|
||||||
const real importo = effetto.get_real(EFF_IMPORTO);
|
const real importo = effetto.get_real(EFF_IMPORTO);
|
||||||
|
|
||||||
if (importo > ZERO) // Gli effetti negativi non vanno scritti
|
if (importo > ZERO) // Gli effetti negativi non vanno scritti
|
||||||
{
|
{
|
||||||
const char tipocf = effetto.get_char(EFF_TIPOCF);
|
const char tipocf = effetto.get_char(EFF_TIPOCF);
|
||||||
const long codcf = effetto.get_long(EFF_CODCF);
|
const long codcf = effetto.get_long(EFF_CODCF);
|
||||||
TString key;
|
|
||||||
|
|
||||||
key.format("%c|%ld", tipocf, codcf);
|
|
||||||
real impmin;
|
real impmin;
|
||||||
|
|
||||||
if (!interattivo)
|
if (!interattivo)
|
||||||
{
|
{
|
||||||
|
TString8 key; key.format("%c|%ld", tipocf, codcf);
|
||||||
impmin = real(cache().get(LF_CFVEN, key, CFV_IMPMINEFF));
|
impmin = real(cache().get(LF_CFVEN, key, CFV_IMPMINEFF));
|
||||||
if (impmin == ZERO)
|
if (impmin.is_zero())
|
||||||
impmin = _impmin;
|
impmin = _impmin;
|
||||||
}
|
}
|
||||||
if (effetto.get_int(EFF_TIPOPAG) == _rid || importo >= impmin)
|
if (effetto.get_int(EFF_TIPOPAG) == _rid || importo >= impmin)
|
||||||
|
{
|
||||||
err = effetto.write(*_efffile); // Pensa a tutto lui per rinumerare...
|
err = effetto.write(*_efffile); // Pensa a tutto lui per rinumerare...
|
||||||
|
|
||||||
|
const long n = effetto.get_long(EFF_NPROGTR);
|
||||||
|
msg.cut(0) << TR("Scrittura effetto ") << n;
|
||||||
|
pi.set_text(msg);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
_effetti_array.destroy(i);
|
_effetti_array.destroy(i);
|
||||||
}
|
}
|
||||||
@ -254,7 +293,7 @@ error_type TGenerazione_effetti::write_groups(bool interattivo)
|
|||||||
// per l'effetto 5 vale la fattura 3.
|
// per l'effetto 5 vale la fattura 3.
|
||||||
// Questo e' quanto ho appreso (Hope I'm right...) ;-)
|
// Questo e' quanto ho appreso (Hope I'm right...) ;-)
|
||||||
|
|
||||||
long TGenerazione_effetti::group_bills(TAssoc_array& group_array, bool interattivo)
|
long TGenerazione_effetti::group_bills(TAssoc_array& group_array, bool interattivo, bool fast)
|
||||||
{
|
{
|
||||||
// Bail out if there aren't items...
|
// Bail out if there aren't items...
|
||||||
const int items = group_array.items();
|
const int items = group_array.items();
|
||||||
@ -271,27 +310,24 @@ long TGenerazione_effetti::group_bills(TAssoc_array& group_array, bool interatti
|
|||||||
msg1 = TR("Raggruppamento effetti");
|
msg1 = TR("Raggruppamento effetti");
|
||||||
|
|
||||||
#ifdef DBG
|
#ifdef DBG
|
||||||
TProgind p(items,msg1,TRUE,TRUE,1);
|
TProgind p(items,msg1,TRUE,TRUE);
|
||||||
#else
|
#else
|
||||||
TProgind p(items,msg1,FALSE,TRUE,1);
|
TProgind p(items,msg1,FALSE,TRUE);
|
||||||
#endif
|
#endif
|
||||||
TToken_string * group_element;
|
TToken_string * group_element;
|
||||||
// Ciclo sugli elementi dell'assoc_array
|
// Ciclo sugli elementi dell'assoc_array
|
||||||
for (group_element = (TToken_string *) group_array.first_item(); group_element != NULL && i < items; i++,group_element = (TToken_string*)group_array.succ_item())
|
for (group_element = (TToken_string *) group_array.first_item(); group_element != NULL && i < items; i++,group_element = (TToken_string*)group_array.succ_item())
|
||||||
{
|
{
|
||||||
#ifdef DBG
|
if (!p.setstatus(i+1))
|
||||||
if (p.iscancelled()) break;
|
break;
|
||||||
#endif
|
|
||||||
p.setstatus(i+1);
|
|
||||||
// Ciclo sui documenti da raggruppare
|
// Ciclo sui documenti da raggruppare
|
||||||
group_element->restart();
|
group_element->restart();
|
||||||
const int doc_items = group_element->items();
|
const int doc_items = group_element->items();
|
||||||
|
|
||||||
for (j=0;j<doc_items;j++)
|
for (j=0;j<doc_items;j++)
|
||||||
{
|
{
|
||||||
#ifdef DBG
|
if (p.iscancelled())
|
||||||
if (p.iscancelled()) break;
|
break;
|
||||||
#endif
|
|
||||||
TToken_string t(group_element->get(j),'$');
|
TToken_string t(group_element->get(j),'$');
|
||||||
const char provv = t.get_char(0);
|
const char provv = t.get_char(0);
|
||||||
const int anno = t.get_int(1);
|
const int anno = t.get_int(1);
|
||||||
@ -358,8 +394,7 @@ long TGenerazione_effetti::group_bills(TAssoc_array& group_array, bool interatti
|
|||||||
|
|
||||||
for (; index < effitems; index++)
|
for (; index < effitems; index++)
|
||||||
{
|
{
|
||||||
TEffetto& effetto=(TEffetto&)_effetti_array[index];
|
const TEffetto& effetto = (const TEffetto&)_effetti_array[index];
|
||||||
|
|
||||||
if (datascad == effetto.get_date(EFF_DATASCAD))
|
if (datascad == effetto.get_date(EFF_DATASCAD))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -483,16 +518,16 @@ long TGenerazione_effetti::group_bills(TAssoc_array& group_array, bool interatti
|
|||||||
|
|
||||||
} // Ciclo sui gruppi
|
} // Ciclo sui gruppi
|
||||||
|
|
||||||
|
p.close_modal();
|
||||||
|
|
||||||
// Cambia lo stato a tutti i documenti raggruppati
|
// Cambia lo stato a tutti i documenti raggruppati
|
||||||
long tot = 0L;
|
long tot = 0L;
|
||||||
if (_can_write)
|
if (_can_write)
|
||||||
{
|
{
|
||||||
xvtil_statbar_set("Scrittura effetti raggruppati in corso...");
|
|
||||||
do_events();
|
|
||||||
if (write_groups(interattivo) == no_error)
|
if (write_groups(interattivo) == no_error)
|
||||||
{
|
{
|
||||||
tot = _effetti_array.items();
|
tot = _effetti_array.items();
|
||||||
change_group_status(doc, group_array);
|
change_group_status(doc, group_array, fast);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_effetti_array.destroy();
|
_effetti_array.destroy();
|
||||||
|
@ -1397,7 +1397,6 @@ void TDocumento_mask::doc2mask(bool reload_clifo, bool force_load, bool update)
|
|||||||
if (r.tipo().tipo() == RIGA_PRESTAZIONI)
|
if (r.tipo().tipo() == RIGA_PRESTAZIONI)
|
||||||
{
|
{
|
||||||
const TSpesa_prest & spesa = r.spesa();
|
const TSpesa_prest & spesa = r.spesa();
|
||||||
|
|
||||||
if (spesa.tipo() == 'V')
|
if (spesa.tipo() == 'V')
|
||||||
s.disable_cell(i, s.cid2index(FR_QTA));
|
s.disable_cell(i, s.cid2index(FR_QTA));
|
||||||
}
|
}
|
||||||
@ -3954,7 +3953,7 @@ void TDocumento_mask::update_father_rows(bool add)
|
|||||||
|
|
||||||
if (r.is_merce() || r.is_omaggio()|| r.is_prestazione())
|
if (r.is_merce() || r.is_omaggio()|| r.is_prestazione())
|
||||||
{
|
{
|
||||||
TRiga_documento * original_row = (TRiga_documento *) r.find_original_rdoc();
|
const TRectype* original_row = r.find_original_rdoc();
|
||||||
|
|
||||||
if (original_row != NULL && _auto_reopen_nums.objptr(original_row->get(RDOC_CODNUM)) != NULL)
|
if (original_row != NULL && _auto_reopen_nums.objptr(original_row->get(RDOC_CODNUM)) != NULL)
|
||||||
{
|
{
|
||||||
@ -3966,8 +3965,7 @@ void TDocumento_mask::update_father_rows(bool add)
|
|||||||
key.add(original_row->get(RDOC_NDOC));
|
key.add(original_row->get(RDOC_NDOC));
|
||||||
key.add(original_row->get(RDOC_IDRIGA));
|
key.add(original_row->get(RDOC_IDRIGA));
|
||||||
|
|
||||||
real * qta = (real *) _father_rows.objptr(key);
|
real* qta = (real*)_father_rows.objptr(key);
|
||||||
|
|
||||||
if (qta == NULL)
|
if (qta == NULL)
|
||||||
{
|
{
|
||||||
qta = new real;
|
qta = new real;
|
||||||
@ -3978,15 +3976,14 @@ void TDocumento_mask::update_father_rows(bool add)
|
|||||||
|
|
||||||
if (r.is_articolo())
|
if (r.is_articolo())
|
||||||
{
|
{
|
||||||
TArticolo & art = cached_article(r.get(RDOC_CODARTMAG));
|
TArticolo& art = cached_article(r.get(RDOC_CODARTMAG));
|
||||||
|
|
||||||
value = art.convert_to_um(value, original_row->get(RDOC_UMQTA), r.get(RDOC_UMQTA));
|
value = art.convert_to_um(value, original_row->get(RDOC_UMQTA), r.get(RDOC_UMQTA));
|
||||||
}
|
}
|
||||||
if(add)
|
if(add)
|
||||||
*qta += value;
|
*qta += value;
|
||||||
else
|
else
|
||||||
*qta -= value;
|
*qta -= value;
|
||||||
if (*qta == ZERO)
|
if (qta->is_zero())
|
||||||
_father_rows.remove(key);
|
_father_rows.remove(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -546,18 +546,12 @@ int OsWin32_Help(WXHWND handle, const char* hlp, unsigned int cmd, const char* t
|
|||||||
wxFileName fn = str;
|
wxFileName fn = str;
|
||||||
fn.MakeAbsolute();
|
fn.MakeAbsolute();
|
||||||
str = fn.GetFullPath();
|
str = fn.GetFullPath();
|
||||||
unsigned long err = (unsigned long)::ShellExecute((HWND)handle, "open", str, NULL, NULL, SW_SHOWNORMAL);
|
::ShellExecute((HWND)handle, "open", str, NULL, NULL, SW_SHOWNORMAL);
|
||||||
if (err <= 32)
|
|
||||||
{
|
|
||||||
wxString msg;
|
|
||||||
msg << "Can't open '" << str << "': error " << err;
|
|
||||||
wxMessageBox(msg, "Campo", wxICON_WARNING | wxOK);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
OsWin32_Beep(1);
|
OsWin32_Beep(1); // Error beep
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user