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:
guy 2012-05-29 08:52:37 +00:00
parent 41582a974e
commit 4be3336e19
31 changed files with 960 additions and 793 deletions

View File

@ -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);
#ifdef DBG
if (tipo_sit == 1 && atol(idcespite) == 2004049L)
if (tipo_sit == 1 && atol(idcespite) == 1362)
tipo_sit = 1; // Put your breakpoint here
#endif

View File

@ -94,6 +94,8 @@ protected:
bool genera_nomi_output(const char* nome, TFilename& txt, TFilename& tmp) const;
bool salva_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:
};
@ -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);
}
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)
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));
//prima moda: nel campo CodiceListino ci va il codice Campo del Contratto del cliente (listino cliente per Hardy)
/*TString query;
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);
//Nel campo CodiceListino ci va il codice del Listino Campo associato al cliente in cfven
clienti.set("CodiceListino", curr_cod_list(codcf));
const TString& str_sconto = archivio_clienti.get(CFV_SCONTO).as_string();
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
bool TFile2Txt::genera_righelistini_txt()
{
const TDate oggi(TODAY);
TEsporta_listini_recordset righe_listini;
TISAM_recordset agenti("USE AGENTI");
@ -437,6 +451,7 @@ bool TFile2Txt::genera_righelistini_txt()
TString query;
query << "USE RCONDV";
query << "\nJOIN CONDV INTO TIPO=TIPO TIPOCF=TIPOCF CODCF==CODCF COD==COD";
query << "\nFROM TIPO=L";
query << "\nTO TIPO=L";
@ -449,13 +464,18 @@ bool TFile2Txt::genera_righelistini_txt()
TProgind progind(archivio_rcondv_items, "Listini...", false, true);
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.set("CodiceTerminale", codage);
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);
real prezzo = archivio_rcondv.get(RCONDV_PREZZO).as_real();

View File

@ -1,10 +1,6 @@
#include <xvt.h>
#include <checks.h>
#include "ha2.h"
#define usage "Error - usage : %s -{0|1}"
int main(int argc,char** argv)
{
int rt = -1 ;
@ -12,14 +8,8 @@ int main(int argc,char** argv)
switch (r)
{
case 0:
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;
case 1: rt = ha2200(argc, argv) ; break; //gestione file fatture
default: rt = ha2100(argc, argv) ; break; //gestione file privat
}
return rt;
}

View File

@ -1907,8 +1907,7 @@ int TSystemisamfile::update(
{
if (newrec.len() == 0)
{
if (interactive)
error_box(FR("Il nuovo tracciato per il file %d e' vuoto"), num());
// if (interactive) error_box(FR("Il nuovo tracciato per il file %d e' vuoto"), num()); // Fastidioso per Ilaria
setstatus(_istrcerr);
return status();
}

View File

@ -346,7 +346,8 @@ TPrintwin::TPrintwin(TTextfile& txt, const char* title)
_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 segno = abs_column>=0 ? 1 : -1;

View File

@ -37,10 +37,10 @@ bool TGenera_documenti_msk::on_field_event(TOperable_field& o, TField_event e, l
switch (o.dlg())
{
case F_DTDOC:
if(e == fe_modify)
if (e == fe_modify)
{
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"));
o.reset();
@ -394,11 +394,7 @@ void TGenera_documenti_app::crea_riga(TToken_string& chiave, const char modpas,
const TRectype& rcont = cont.row(codart);
//recupero i dati di interesse dalla riga del contratto
bool arrot;
if (rcont.get_int(LVRCONDV_CALCCONS) == 1)
arrot = true;
else
arrot = false;
const bool arrot = rcont.get_int(LVRCONDV_CALCCONS) == 1;
const real conguaglio = rcont.get_real(LVRCONDV_QTACONG);
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
TCausale_magazzino rit(caudt.causale_ritiro());
TCausale_magazzino con(caudt.causale_consegna());
const TCausale_magazzino rit(caudt.causale_ritiro());
const TCausale_magazzino con(caudt.causale_consegna());
TString8 magazzino;
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();
rdoc.put(RDOC_CODAGG1, codcau);
if(cau.is_consegna())
if (cau.is_consegna())
{
const real quantita_noarr = qta - conguaglio;
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();
//se sforo (arr > 0) allora calcolo quanti pezzi in più gli devo dare e aggiorno la quantità
if (arr > 0)
{
if (arr > ppconf.integer() * perarr / 100) //arr <= ppconf*perarr/100 -> formula calcolo congualgio di Tassan
{
arr = ppconf.integer() - arr;
@ -539,6 +536,7 @@ void TGenera_documenti_app::crea_riga(TToken_string& chiave, const char modpas,
}
else
quantita_arr -= arr;
}
}
//scrivo le quantità
@ -551,7 +549,9 @@ void TGenera_documenti_app::crea_riga(TToken_string& chiave, const char modpas,
//aggiorno il conguaglio sulla riga del contratto
//altrimenti se il record di riga contratto è vuoto aggiorno il log
if (!rcont.empty())
{
aggiorna_conguaglio((TRectype&)rcont, quantita_arr - quantita_noarr);
}
else
{
TString str;
@ -890,7 +890,7 @@ void TGenera_documenti_app::aggiorna_conguaglio(TRectype& rcondv, const real arr
rcondv.rewrite(rcont);
}
////////////////////////////////
////////////////////////////////
//// Metodi Pubblic ////
////////////////////////////////

View File

@ -767,13 +767,11 @@ bool TGestione_bolle_msk::lv_codart_handler(TMask_field& f, KEY k)
//estraggo il record corrispondente su LF_CLIFOGIAC
const TRecmag_lavanderie& reclav = artrec.find_rec(last_esc);
real dotod = reclav.get_real(CLIFOGIAC_DOTOD);
real dotmp = reclav.get_real(CLIFOGIAC_DOTTM);
const real dotod = reclav.get_real(CLIFOGIAC_DOTOD);
const real dotmp = reclav.get_real(CLIFOGIAC_DOTTM);
rdoc.put("DOTOD", dotod);
TString16 tmp;
tmp << dotod;
msk.field(FR_JOLLY1).set(tmp);
msk.set(FR_JOLLY1, dotod);
}
if (rdoc.get(RDOC_CODAGG1).empty())
@ -1332,22 +1330,28 @@ void TGestione_bolle_app::salva_conguaglio(const TDocumento_mask& mask)
const TLaundry_contract cont(codcf, indsped, datadoc);
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);
FOR_EACH_DOC_ROW_BACK(d, r, row)
{
TRiga_documento& rdoc = (TRiga_documento&)*row;
const TCausale_lavanderie cau(rdoc.get(RDOC_CODAGG1));
if (cau.movcong())
if (!is_buono_ritiro) // 02-05-2012
{
rcondv.put(LVRCONDV_CODCF, codcf);
rcondv.put(LVRCONDV_CODCONT, codcont);
rcondv.put(LVRCONDV_CODART, rdoc.get(RDOC_CODART));
if (rcondv.read() == NOERR)
const TCausale_lavanderie cau(rdoc.get(RDOC_CODAGG1));
if (cau.movcong())
{
rcondv.put(LVRCONDV_QTACONG, rdoc.get_real(RDOC_QTAGG5));
rcondv.rewrite();
rcondv.put(LVRCONDV_CODCF, codcf);
rcondv.put(LVRCONDV_CODCONT, codcont);
rcondv.put(LVRCONDV_CODART, rdoc.get(RDOC_CODART));
if (rcondv.read() == NOERR)
{
rcondv.put(LVRCONDV_QTACONG, rdoc.get_real(RDOC_QTAGG5));
rcondv.rewrite();
}
}
}
@ -1517,14 +1521,11 @@ void TGestione_bolle_app::init_modify_mode(TMask &m)
//metodo che mi restituisce la giac
TGiac_per_cli& TGestione_bolle_app::giacenza()
{
return _giac;
}
{ return _giac; }
int lv3100( int argc, char* argv[])
{
TGestione_bolle_app a;
a.run( argc, argv, TR("Documenti di Trasporto"));
return 0;
}

View File

@ -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);
//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
const TRectype& cfven = cache().get(LF_CFVEN, key);
@ -425,7 +425,7 @@ void TEvasione_ter_msk::genera_buono()
doc.put(DOC_TIPODOC, tipodoc);
doc.put(DOC_STATO, stato);
if(ini_get_bool(CONFIG_DITTA, "lv", "DataBcon"))
if(ini_get_bool(CONFIG_DITTA, "lv", "DataBcon"))
{
doc.put(DOC_DATADOC, datagen);
doc.put(DOC_DATAPART, databolla);
@ -525,11 +525,8 @@ void TEvasione_ter_msk::genera_buono()
dotod += (rbpre.qta_consegnata() - rbpre.qta_ritirata());
rdoc.put("DOTOD", dotod);
bool dtmp = false;
if (datagen >= rcont.get_date(LVRCONDV_INDTTMP) && datagen <= rcont.get_date(LVRCONDV_FIDTTMP))
dtmp = true;
if(dtmp)
const bool dtmp = datagen >= rcont.get_date(LVRCONDV_INDTTMP) && datagen <= rcont.get_date(LVRCONDV_FIDTTMP);
if (dtmp)
{
rdoc.put("DOTMP", dottmp);
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 con(cau.causale_consegna());
TString8 magazzino;
TString8 magazzinoc;
if(rit.get("S10").full())
TString8 magazzino, magazzinoc;
if (rit.get("S10").full())
magazzino = rit.get("S10").mid(0,5);
else
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);
else
magazzinoc << ini_get_string(CONFIG_DITTA, "lv", "CODMAG") << ini_get_string(CONFIG_DITTA, "lv", "CODMAGC");
rdoc.put(RDOC_CODMAG, magazzino);
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
@ -603,7 +608,7 @@ void TEvasione_ter_msk::genera_buono()
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);
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];
TBuono_prelievo_row rdoc(row);
@ -832,7 +837,6 @@ void TEvasione_ter_msk::riempi_sheet()
int TEvasione_ter_msk::arrotonda(const int quantita)
{
int perarr = ini_get_int(CONFIG_DITTA, "lv", "Perarr");
int qta = quantita;
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
if (rcont.get_int(LVRCONDV_CALCCONS) == 1)
{
const int perarr = ini_get_int(CONFIG_DITTA, "lv", "Perarr");
//calcolo di quanti pezzi sforo
long arr = quantita % ppconf;
@ -887,7 +893,7 @@ void TEvasione_ter_msk::spezza_riga()
TToken_string chiave(key);
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 qtadacon = qr.get_qta_da_con();
@ -944,7 +950,7 @@ void TEvasione_ter_msk::evadi_da_terminale()
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"));
}
else
@ -954,15 +960,14 @@ void TEvasione_ter_msk::evadi_da_terminale()
TToken_string riga = rp.rigabolla();
int numdoc = riga.get_int(3);
if(numdoc > 0)
if (numdoc > 0)
{
TString msg;
msg << "Il pacco risulta già associato al buono numero " << numdoc;
warning_box(msg);
return;
}
if(numdoc < 0)
} else
if (numdoc < 0)
{
TString msg;
msg << "Il pacco non risulta disponibile a magazzino";

View File

@ -7,10 +7,8 @@ int main(int argc,char** argv)
const int n = (argc > 1) ? atoi(argv[1]+1) : 0;
switch(n)
{
case 1:
collega_vers_rit(argc,argv); break;
default:
SchedaPerc(argc,argv); break;
case 1 : collega_vers_rit(argc,argv); break;
default: SchedaPerc(argc,argv); break;
}
return n < 0;

View File

@ -730,8 +730,8 @@ void TSchedaPercipienti::init_insert_mode(TMask& m)
void TSchedaPercipienti::on_config_change()
{
TConfig conf(CONFIG_STUDIO);
_anno_dic = (int)conf.get_long(ANNO_SEL, NULL);
TConfig conf(CONFIG_STUDIO, "77");
_anno_dic = conf.get_int(ANNO_SEL);
}
void TSchedaPercipienti::init_query_mode(TMask& m)
@ -743,7 +743,7 @@ void TSchedaPercipienti::init_query_mode(TMask& m)
{
const bool variazione = coll_variazione();
_flag_cg = TRUE;
TString16 tipo("");
TString4 tipo;
tipo << _coll._tipo;
m.set(F_TIPOA, tipo);
if (_coll._codanagr != 0L)
@ -795,8 +795,8 @@ void TSchedaPercipienti::init_query_mode(TMask& m)
_from_modify = FALSE;
// forza il ricalcolo dell'ultimo numero disponibile
TString16 dummy(m.get(F_NPROG));
if (dummy.not_empty())
const TString& dummy = m.get(F_NPROG);
if (dummy.full())
setta_nprog(m);
}

View File

@ -63,16 +63,15 @@ NUMBER F_CODANAGRPERC 5
BEGIN
PROMPT 15 8 ""
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 TIPOA F_TIPOA SELECT
INPUT CODANAGR F_CODANAGRPERC
DISPLAY "Tipo " TIPOA
DISPLAY "Codice " CODANAGR
DISPLAY "Cognome - Nome o Ragione sociale@50" LF_ANAG->RAGSOC
OUTPUT F_TIPOA TIPOA
DISPLAY "Tipo " TIPOA
DISPLAY "Codice " CODANAGR
DISPLAY "Denominazione@50" LF_ANAG->RAGSOC
OUTPUT F_CODANAGRPERC CODANAGR
OUTPUT F_RAGSOCPER LF_ANAG->RAGSOC
OUTPUT F_RAGSOCPER LF_ANAG->RAGSOC
MESSAGE COPY, F_CODANAGR
ADD RUN 775 -0
GROUP 2
@ -81,15 +80,15 @@ END
NUMBER F_CODANAGRCOM 5
BEGIN
PROMPT 15 8 ""
USE LF_ANAG SELECT (TIPOA=#F_TIPOA)
INPUT TIPOA F_TIPOA
USE LF_ANAG
INPUT TIPOA F_TIPOA SELECT
INPUT CODANAGR F_CODANAGRCOM
DISPLAY "Tipo " TIPOA
DISPLAY "Codice " CODANAGR
DISPLAY "Cognome - Nome o Ragione sociale@50" RAGSOC
OUTPUT F_TIPOA TIPOA
DISPLAY "Tipo" TIPOA
DISPLAY "Codice" CODANAGR
DISPLAY "Denominazione@50" RAGSOC
OUTPUT F_TIPOA TIPOA
OUTPUT F_CODANAGRCOM CODANAGR
OUTPUT F_RAGSOCCOM RAGSOC
OUTPUT F_RAGSOCCOM RAGSOC
MESSAGE COPY, F_CODANAGR
ADD RUN BA4 -1
FLAGS "H"
@ -99,15 +98,15 @@ END
STRING F_RAGSOCCOM 50
BEGIN
PROMPT 25 8 ""
USE LF_ANAG KEY 2
INPUT TIPOA F_TIPOA
USE LF_ANAG KEY 2
JOIN LF_PERC INTO CODDITTA=#F_CODDITTA TIPOA=TIPOA CODANAGR==CODANAGR
INPUT TIPOA F_TIPOA SELECT
INPUT RAGSOC F_RAGSOCCOM
DISPLAY "Cognome - Nome o Ragione sociale@50" RAGSOC
DISPLAY "Denominazione@50" RAGSOC
DISPLAY "Tipo" TIPOA
DISPLAY "Codice" CODANAGR
OUTPUT F_RAGSOCCOM RAGSOC
OUTPUT F_CODANAGRCOM CODANAGR
OUTPUT F_TIPOA TIPOA
DISPLAY "Percipiente" LF_PERC->CODANAGR
COPY OUTPUT F_CODANAGRCOM
ADD RUN BA4 -1
MESSAGE COPY, F_RAGSOCPER
GROUP 1
@ -116,15 +115,12 @@ END
STRING F_RAGSOCPER 50
BEGIN
PROMPT 25 8 ""
USE LF_ANAG KEY 2
INPUT TIPOA F_TIPOA
USE LF_ANAG KEY 2 SELECT LF_PERC->CODANAGR!=""
JOIN LF_PERC INTO CODDITTA=#F_CODDITTA TIPOA=TIPOA CODANAGR==CODANAGR
INPUT TIPOA F_TIPOA SELECT
INPUT RAGSOC F_RAGSOCPER
DISPLAY "Cognome - Nome o Ragione sociale@50" RAGSOC
DISPLAY "Tipo" TIPOA
DISPLAY "Codice" CODANAGR
OUTPUT F_RAGSOCPER RAGSOC
OUTPUT F_CODANAGRPERC CODANAGR
OUTPUT F_TIPOA TIPOA
COPY DISPLAY F_RAGSOCCOM
COPY OUTPUT F_CODANAGRPERC
ADD RUN BA4 -1
GROUP 2
END

View File

@ -686,7 +686,7 @@ TTracciato770::TTracciato770(char tipo) : _tipo(tipo)
if (tipo == 'A')
{
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("Codice fiscale del fornitore", CF, 23, 16);
add_filler(39, 483);
@ -1368,45 +1368,6 @@ bool TTrasferimento770::append_record_b()
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);
key.cut(0) << "F|" << rec_nditte.get(NDT_RAPPR);
@ -1533,7 +1494,7 @@ bool TTrasferimento770::split(const char* path)
if (_save_headers)
{
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(5, cod_fis_dic()); // Codice fiscale del fornitore
if (volumes > 1)

View File

@ -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)
{
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)

View File

@ -346,6 +346,7 @@ END
BUTTON DLG_ENABLE 10 2
BEGIN
PROMPT -44 -1 "~Abilita"
PICTURE TOOL_EDIT
END
ENDPAGE

View File

@ -1,344 +1,344 @@
[Cursors]
8001=resize.cur
8002=hand.cur
8003=vresize.cur
8004=harrow.cur
8883=fly.ico
[Icons]
9012=campo.ico
9013=camposrv.ico
9014=campocln.ico
10108=combo.ico
10109=search.ico
10110=checkon.ico
10111=checkoff.ico
10112=filtron.ico
10113=filtroff.ico
10201=error.ico
10202=folder.ico
10203=stop.ico
10210=toolbox.ico
10211=register.ico
10212=moneys.ico
10213=zipgold.ico
10214=notepad.ico
10215=boxopen.ico
10216=pref.ico
10217=report.ico
10218=spotlite.ico
10219=home.ico
10220=lavatrice.ico
10221=field.ico
10222=fieldpro.ico
10223=section.ico
10224=sectpro.ico
10225=repprop.ico
10226=stats.ico
10227=avis.ico
10228=benem.ico
10229=print.ico
10230=convoc.ico
10231=setup.ico
10232=moka.ico
10233=day_work.ico
10234=day_holy.ico
10235=day_full.ico
[Images]
101=ok.bmp
102=cancel.bmp
103=saverec.bmp
104=delrec.bmp
105=newrec.bmp
107=config.bmp
109=search.bmp
114=quit.bmp
115=select.bmp
116=edit.bmp
117=link.bmp
118=print.bmp
119=recalc.bmp
120=elabora.bmp
121=firstrec.bmp
122=prevrec.bmp
123=stoprec.bmp
124=nextrec.bmp
125=lastrec.bmp
126=findrec.bmp
127=module1.bmp
128=module2.bmp
129=module3.bmp
130=module4.bmp
134=module.bmp
135=ole.png
139=email.bmp
140=hardlock.bmp
141=eutron.bmp
153=saverecd.bmp
154=delrecdn.bmp
155=newrecdn.bmp
164=quitdn.bmp
165=setprint.bmp
167=dir.bmp
168=dirdn.bmp
169=file.bmp
171=filechk.bmp
172=dirsel.bmp
173=dirdnsel.bmp
174=pdf.bmp
175=archivia.bmp
177=bigdir.png
178=bigdirdn.png
180=copy.bmp
181=paste.bmp
182=check.bmp
185=darrowu.bmp
186=darrowd.bmp
187=darrowl.bmp
188=darrowr.bmp
189=darrowul.bmp
190=darrowdl.bmp
191=darrowur.bmp
192=darrowdr.bmp
193=darrowl2.bmp
194=darrowr2.bmp
195=darrowu2.bmp
196=darrowd2.bmp
197=sarrowu.bmp
198=sarrowd.bmp
224=pagamento.bmp
225=insoluto.bmp
1671=darrowr2.bmp
1700=selordp.bmp
1701=selordf.bmp
1801=ord_in.bmp
1802=ord_out.bmp
1803=cons_in.bmp
1804=cons_out.bmp
1810=testa.png
1811=corpo.png
1812=piede.png
1813=testasub.png
1814=corposub.png
1815=piedesub.png
1816=testasot.png
1817=corposot.png
1818=piedesot.png
20000=ase3.gif
20001=datalog.gif
[Tools]
100=empty.png
101=ok.png
102=cancel.png
103=saverec.png
104=delrec.png
105=newrec.png
107=properties.png
113=download.png
114=quit.png
115=multisel.png
116=edit.png
117=link.png
118=print.png
119=recalc.png
120=elabora.png
121=firstrec.png
122=prevrec.png
123=stoprec.png
124=nextrec.png
125=lastrec.png
126=findrec.png
131=check.png
135=ole.png
139=email.png
142=signmail.png
143=signpdf.png
144=signarc.png
150=import.png
151=export.png
156=convert.png
157=pack.png
158=barcode.png
162=info.png
163=help.png
165=setprint.png
174=pdf.png
175=archive.png
176=preview.png
179=font.png
180=copy.png
181=paste.png
183=excel.png
184=reset.png
201=alt.png
202=question.png
203=warning.png
204=favorites.png
205=addfav.png
206=closeturn.png
207=closescontr.png
208=suspscontr.png
209=suspscontrs.png
210=scontr2fatt.png
211=permissions.png
212=print_elenco.png
213=print_schede.png
214=print_etichette.png
215=print_rubrica.png
216=cellular.png
217=pack2cli.png
218=pack2mag.png
219=users.png
220=smile.png
221=todataini.png
222=todatafin.png
223=tocalc.png
224=pagamento.png
225=insoluto.png
233=day_work.png
234=day_holy.png
235=day_full.png
[Menu_7000]
Item_00 = 10001,&Visualizzazione
Item_00_00 = 7003,Interrompi\tESC
Item_00_01 = 7004,Colle&ga...\tCtrl+G,D
Item_00_02 = 7005,&Esporta...\tCtrl+E
Item_00_03 = 7006,&Stampa... \tCtrl+S,D
Item_00_04 = -1,Separator
Item_00_05 = 7007,Mostra &righelli,C
Item_00_06 = 7008,Mostra &bottoni,C
Item_00_07 = 7009,Ri&disegna
Item_00_08 = -1,Separator
Item_00_09 = 7010,Chiudi\tESC+ESC
Item_01 = 10002,&Modifica
Item_01_00 = 7011,&Copia,D
Item_01_01 = 7012,&Annulla,D
Item_01_02 = -1,Separator
Item_01_03 = 7013,Cerca...\tF7,
Item_01_04 = 7014,Cerca il prossimo\tF8,D
[Menu_8000]
Item_00 = 10001,~Proprieta'
Item_00_00 = 8001,&Salva impostazioni colonne
Item_00_01 = 8002,&Ripristina impostazioni colonne
Item_00_02 = 8004,Esportazione in E&xcel
Item_00_03 = -1,Separator
Item_00_04 = 8003,&Informazioni
[Menu_BA0-0]
Item_00 = 32050,&Opzioni
Item_00_00 = 30004,Cambio &studio...
Item_00_01 = 32001,Cambio &ditta...
Item_00_02 = 30007,Cambio &utente...
Item_00_03 = -1,Separator
Item_00_04 = 30002,&Aspetto
Item_00_05 = 30003,&Editors
Item_01 = 32350,&Preferiti
Item_01_00 = 30005,&Aggiungi
Item_01_01 = 30006,&Organizza
[Menu_BA0-3]
Item_00 = 10001,Proprieta'
Item_00_00 = 8001,Menu principale
Item_00_01 = 8002,Ripristina dimensioni standard
Item_00_02 = -1,Separator
Item_00_03 = 8003,Cerca testo...
Item_00_04 = 8004,Cerca prossimo
Item_00_05 = -1,Separator
Item_00_06 = 8005,Informazioni...
[Menu_BA2-0]
Item_00=5100,&Dati
Item_00_00=30011,&Relazione
Item_00_01=30012,&Parametri
Item_00_02=30013,Caratteri &fincatura
Item_00_03=30014,&Cambia profilo
Item_00_04=30015,Imposta formato &numeri
Item_00_05=30016,Imposta formato &date
Item_01=5200,&Testa
Item_01_00=30021,&Normale
Item_01_01=30022,&Pari
Item_01_02=30023,&Prima
Item_01_03=30024,&Ultima
Item_02=5300,&Corpo
Item_02_00=30031,&Normale
Item_02_01=30032,&Pari
Item_02_02=30033,&Primo
Item_02_03=30034,&Ultimo
Item_03=5400,&Piede
Item_03_00=30041,&Normale
Item_03_01=30042,&Pari
Item_03_02=30043,&Primo
Item_03_03=30044,&Ultimo
Item_04=5500,&Sfondo
Item_04_00=30051,&Normale
Item_04_01=30052,&Pari
Item_04_02=30053,&Primo
Item_04_03=30054,&Ultimo
[Menu_BA2-5]
Item_00=5100,&Maschera
Item_00_00=30011,&Nuova
Item_00_01=30012,&Apri
Item_00_02=30013,&Salva
Item_00_03=30014,Salva &con nome
Item_01=5200,&Modifica
Item_01_00=30021,&Copia-Incolla
Item_01_01=30022,Ca&ncella\tCANC
Item_01_02=30023,S&posta in...\tF2
Item_02=5300,&Aggiungi
Item_02_00=30031,&Button
Item_02_01=30032,B&ooleano
Item_02_02=30033,Currenc&y
Item_02_03=30034,&Date
Item_02_04=30035,Gru&ppo
Item_02_05=30036,&Lista
Item_02_06=30037,&Memo
Item_02_07=30038,&Numero
Item_02_08=30039,P&ulsantiera
Item_02_09=30310,Ta&bella
Item_02_10=30311,S&tringa
Item_02_11=30312,Te&sto
Item_02_12=30313,&Zoom
Item_03=5200,&Visualizza
Item_03_00=30041,&Controlli presenti\tF3
Item_03_01=30042,&Maschera di sheet\tF4
Item_03_02=30043,Co&ntrolli-maschera sheet\tF5
Item_04=5200,&Test
Item_04_00=30051,&Compilazione
Item_04_01=30052,&Esecuzione
[Menu_LV0-3]
Item_00=5100,&Opzioni
Item_00_00=30001,&Colori righe
[Menu_VE0-0]
Item_00=5100,&Opzioni
Item_00_00=30001,&Colori righe
[Menu_MR2-0]
Item_00=5100,&Opzioni
Item_00_00=30001,&Colori righe
[Menu_MR2-1]
Item_00=5100,&Opzioni
Item_00_00=30001,&Colori righe
[Menu_PE0-3]
Item_00=5100,&Opzioni
Item_00_00=30001,&Colori righe
[Menu_LV3-0]
Item_00=5100,&Opzioni
Item_00_00=30001,&Colori righe
[Cursors]
8001=resize.cur
8002=hand.cur
8003=vresize.cur
8004=harrow.cur
8883=fly.ico
[Icons]
9012=campo.ico
9013=camposrv.ico
9014=campocln.ico
10108=combo.ico
10109=search.ico
10110=checkon.ico
10111=checkoff.ico
10112=filtron.ico
10113=filtroff.ico
10201=error.ico
10202=folder.ico
10203=stop.ico
10210=toolbox.ico
10211=register.ico
10212=moneys.ico
10213=zipgold.ico
10214=notepad.ico
10215=boxopen.ico
10216=pref.ico
10217=report.ico
10218=spotlite.ico
10219=home.ico
10220=lavatrice.ico
10221=field.ico
10222=fieldpro.ico
10223=section.ico
10224=sectpro.ico
10225=repprop.ico
10226=stats.ico
10227=avis.ico
10228=benem.ico
10229=print.ico
10230=convoc.ico
10231=setup.ico
10232=hardy.ico
10233=day_work.ico
10234=day_holy.ico
10235=day_full.ico
[Images]
101=ok.bmp
102=cancel.bmp
103=saverec.bmp
104=delrec.bmp
105=newrec.bmp
107=config.bmp
109=search.bmp
114=quit.bmp
115=select.bmp
116=edit.bmp
117=link.bmp
118=print.bmp
119=recalc.bmp
120=elabora.bmp
121=firstrec.bmp
122=prevrec.bmp
123=stoprec.bmp
124=nextrec.bmp
125=lastrec.bmp
126=findrec.bmp
127=module1.bmp
128=module2.bmp
129=module3.bmp
130=module4.bmp
134=module.bmp
135=ole.png
139=email.bmp
140=hardlock.bmp
141=eutron.bmp
153=saverecd.bmp
154=delrecdn.bmp
155=newrecdn.bmp
164=quitdn.bmp
165=setprint.bmp
167=dir.bmp
168=dirdn.bmp
169=file.bmp
171=filechk.bmp
172=dirsel.bmp
173=dirdnsel.bmp
174=pdf.bmp
175=archivia.bmp
177=bigdir.png
178=bigdirdn.png
180=copy.bmp
181=paste.bmp
182=check.bmp
185=darrowu.bmp
186=darrowd.bmp
187=darrowl.bmp
188=darrowr.bmp
189=darrowul.bmp
190=darrowdl.bmp
191=darrowur.bmp
192=darrowdr.bmp
193=darrowl2.bmp
194=darrowr2.bmp
195=darrowu2.bmp
196=darrowd2.bmp
197=sarrowu.bmp
198=sarrowd.bmp
224=pagamento.bmp
225=insoluto.bmp
1671=darrowr2.bmp
1700=selordp.bmp
1701=selordf.bmp
1801=ord_in.bmp
1802=ord_out.bmp
1803=cons_in.bmp
1804=cons_out.bmp
1810=testa.png
1811=corpo.png
1812=piede.png
1813=testasub.png
1814=corposub.png
1815=piedesub.png
1816=testasot.png
1817=corposot.png
1818=piedesot.png
20000=ase3.gif
20001=datalog.gif
[Tools]
100=empty.png
101=ok.png
102=cancel.png
103=saverec.png
104=delrec.png
105=newrec.png
107=properties.png
113=download.png
114=quit.png
115=multisel.png
116=edit.png
117=link.png
118=print.png
119=recalc.png
120=elabora.png
121=firstrec.png
122=prevrec.png
123=stoprec.png
124=nextrec.png
125=lastrec.png
126=findrec.png
131=check.png
135=ole.png
139=email.png
142=signmail.png
143=signpdf.png
144=signarc.png
150=import.png
151=export.png
156=convert.png
157=pack.png
158=barcode.png
162=info.png
163=help.png
165=setprint.png
174=pdf.png
175=archive.png
176=preview.png
179=font.png
180=copy.png
181=paste.png
183=excel.png
184=reset.png
201=alt.png
202=question.png
203=warning.png
204=favorites.png
205=addfav.png
206=closeturn.png
207=closescontr.png
208=suspscontr.png
209=suspscontrs.png
210=scontr2fatt.png
211=permissions.png
212=print_elenco.png
213=print_schede.png
214=print_etichette.png
215=print_rubrica.png
216=cellular.png
217=pack2cli.png
218=pack2mag.png
219=users.png
220=smile.png
221=todataini.png
222=todatafin.png
223=tocalc.png
224=pagamento.png
225=insoluto.png
233=day_work.png
234=day_holy.png
235=day_full.png
[Menu_7000]
Item_00 = 10001,&Visualizzazione
Item_00_00 = 7003,Interrompi\tESC
Item_00_01 = 7004,Colle&ga...\tCtrl+G,D
Item_00_02 = 7005,&Esporta...\tCtrl+E
Item_00_03 = 7006,&Stampa... \tCtrl+S,D
Item_00_04 = -1,Separator
Item_00_05 = 7007,Mostra &righelli,C
Item_00_06 = 7008,Mostra &bottoni,C
Item_00_07 = 7009,Ri&disegna
Item_00_08 = -1,Separator
Item_00_09 = 7010,Chiudi\tESC+ESC
Item_01 = 10002,&Modifica
Item_01_00 = 7011,&Copia,D
Item_01_01 = 7012,&Annulla,D
Item_01_02 = -1,Separator
Item_01_03 = 7013,Cerca...\tF7,
Item_01_04 = 7014,Cerca il prossimo\tF8,D
[Menu_8000]
Item_00 = 10001,~Proprieta'
Item_00_00 = 8001,&Salva impostazioni colonne
Item_00_01 = 8002,&Ripristina impostazioni colonne
Item_00_02 = 8004,Esportazione in E&xcel
Item_00_03 = -1,Separator
Item_00_04 = 8003,&Informazioni
[Menu_BA0-0]
Item_00 = 32050,&Opzioni
Item_00_00 = 30004,Cambio &studio...
Item_00_01 = 32001,Cambio &ditta...
Item_00_02 = 30007,Cambio &utente...
Item_00_03 = -1,Separator
Item_00_04 = 30002,&Aspetto
Item_00_05 = 30003,&Editors
Item_01 = 32350,&Preferiti
Item_01_00 = 30005,&Aggiungi
Item_01_01 = 30006,&Organizza
[Menu_BA0-3]
Item_00 = 10001,Proprieta'
Item_00_00 = 8001,Menu principale
Item_00_01 = 8002,Ripristina dimensioni standard
Item_00_02 = -1,Separator
Item_00_03 = 8003,Cerca testo...
Item_00_04 = 8004,Cerca prossimo
Item_00_05 = -1,Separator
Item_00_06 = 8005,Informazioni...
[Menu_BA2-0]
Item_00=5100,&Dati
Item_00_00=30011,&Relazione
Item_00_01=30012,&Parametri
Item_00_02=30013,Caratteri &fincatura
Item_00_03=30014,&Cambia profilo
Item_00_04=30015,Imposta formato &numeri
Item_00_05=30016,Imposta formato &date
Item_01=5200,&Testa
Item_01_00=30021,&Normale
Item_01_01=30022,&Pari
Item_01_02=30023,&Prima
Item_01_03=30024,&Ultima
Item_02=5300,&Corpo
Item_02_00=30031,&Normale
Item_02_01=30032,&Pari
Item_02_02=30033,&Primo
Item_02_03=30034,&Ultimo
Item_03=5400,&Piede
Item_03_00=30041,&Normale
Item_03_01=30042,&Pari
Item_03_02=30043,&Primo
Item_03_03=30044,&Ultimo
Item_04=5500,&Sfondo
Item_04_00=30051,&Normale
Item_04_01=30052,&Pari
Item_04_02=30053,&Primo
Item_04_03=30054,&Ultimo
[Menu_BA2-5]
Item_00=5100,&Maschera
Item_00_00=30011,&Nuova
Item_00_01=30012,&Apri
Item_00_02=30013,&Salva
Item_00_03=30014,Salva &con nome
Item_01=5200,&Modifica
Item_01_00=30021,&Copia-Incolla
Item_01_01=30022,Ca&ncella\tCANC
Item_01_02=30023,S&posta in...\tF2
Item_02=5300,&Aggiungi
Item_02_00=30031,&Button
Item_02_01=30032,B&ooleano
Item_02_02=30033,Currenc&y
Item_02_03=30034,&Date
Item_02_04=30035,Gru&ppo
Item_02_05=30036,&Lista
Item_02_06=30037,&Memo
Item_02_07=30038,&Numero
Item_02_08=30039,P&ulsantiera
Item_02_09=30310,Ta&bella
Item_02_10=30311,S&tringa
Item_02_11=30312,Te&sto
Item_02_12=30313,&Zoom
Item_03=5200,&Visualizza
Item_03_00=30041,&Controlli presenti\tF3
Item_03_01=30042,&Maschera di sheet\tF4
Item_03_02=30043,Co&ntrolli-maschera sheet\tF5
Item_04=5200,&Test
Item_04_00=30051,&Compilazione
Item_04_01=30052,&Esecuzione
[Menu_LV0-3]
Item_00=5100,&Opzioni
Item_00_00=30001,&Colori righe
[Menu_VE0-0]
Item_00=5100,&Opzioni
Item_00_00=30001,&Colori righe
[Menu_MR2-0]
Item_00=5100,&Opzioni
Item_00_00=30001,&Colori righe
[Menu_MR2-1]
Item_00=5100,&Opzioni
Item_00_00=30001,&Colori righe
[Menu_PE0-3]
Item_00=5100,&Opzioni
Item_00_00=30001,&Colori righe
[Menu_LV3-0]
Item_00=5100,&Opzioni
Item_00_00=30001,&Colori righe

View File

@ -125,7 +125,8 @@ OEM=7
Owner=Salvatore Durante
OEM=8
[802]
Owner=CONNEXXA s.r.l.
pc0001 -*=31-12-3000
Owner=Salvatore Durante
OEM=8
[803]
Owner=Meta Calabria (ex-prassi calabria)
@ -476,6 +477,7 @@ OEM=1
Owner=CONFINDUSTRIA Piacenza
OEM=1
[6298]
*=15-04-2012
Owner=Cosea scrl
OEM=1
[6299]
@ -509,6 +511,7 @@ OEM=1
Owner=MEDIA PADANIA SRL
OEM=1
[6342]
*=15-05-2012
Owner=ACTUAL SPOTTI SRL
OEM=1
[6349]
@ -694,9 +697,12 @@ OEM=0
Owner=IMM.RE MONTE GRAPPA PRIMA SRL
OEM=1
[7040]
*=08-02-2011
*=08-02-2012
Owner=Folloni gianluca
OEM=0
[7055]
Owner=Laboratorio Casella
OEM=7
[7061]
ps0872 -?=31-12-3000
Owner=Realplast
@ -827,13 +833,14 @@ OEM=1
Owner=SO.F.IND S.R.L.
OEM=1
[7187]
Owner=BOLZI BRUNO
Owner=BRUNO BOLZI SRL
OEM=6
[7188]
Owner=CISLAGHI ARREDAMENTI S.R.L.
OEM=1
[7191]
Owner=Garlassi
Owner=GARLASSI FRATELLI & C. s.n.c.
OEM=6
[7196]
Owner=Milano AD SRL
OEM=1
@ -859,11 +866,13 @@ Owner=Soc.Coop.OP Monte (Prassi Calabria)
OEM=8
[7225]
Owner=LA NUOVA COPERTURA SRL
OEM=1
[7232]
Owner=Impresa Giardino Srl
OEM=7
[7241]
Owner=Minigomme
OEM=1
MustCall=22-09-2011
[7242]
Owner=TOP PARTIES GEST. SERVIZI SRL
@ -937,7 +946,7 @@ OEM=1
Owner=IMMOBILIARE GIARDINO SAS
OEM=1
[7319]
Owner=IST.SUORE DELLA SACRA FAMIGLIA
Owner=ENTE DI FORMAZIONE SACRA FAMIGLIA
OEM=1
[7320]
Owner=CENTRO PER LA CULTURA
@ -2146,6 +2155,9 @@ OEM=1
Owner=Serpelloni SEC
OEM=0
MustCall=31-12-2011
[8546]
Owner=Extra
OEM=7
[8550]
Owner=Carla srl
OEM=7
@ -3071,7 +3083,7 @@ OEM=8
Owner=O.P. MONTE SOC. COOP. A R.L.
OEM=8
[8908]
Owner=Levilsud di Marinaro
Owner=L'EDILSUD DI MARINARO A. & C. s.a.s.
OEM=8
[8909]
Owner=Abramo Holding spa
@ -3122,7 +3134,7 @@ OEM=1
Owner=ROSSINO SRL
OEM=1
[8926]
Owner=Idealfiocchi
Owner=IDEALFIOCCHI SNC DI ORLANDELLI DAVIDE & C.
OEM=1
[8928]
Owner=CO.MA.RI SOCIETA' COOPERATIVA
@ -3139,20 +3151,20 @@ OEM=1
Owner=CO.MA.RI SOCIETA' COOPERATIVA
OEM=1
[8936]
Owner=EMME&E
Owner=EMME & E srl
OEM=1
[8937]
Owner=EMME&E
Owner=EMME & E srl
OEM=1
[8938]
Owner=Produs
Owner=PRODUS DI GIUSEPPE STILO E C. SNC
OEM=1
[8939]
Owner=SCAI
Owner=S.C.A.I. SRL
OEM=1
[8940]
Owner=Interactive (Tetractis)
OEM=1
Owner=IMPREMED S.p.A.
OEM=4
[8941]
Owner=HABILITA S.P.A
OEM=1
@ -3232,12 +3244,27 @@ OEM=8
[8972]
Owner=Abramo Real Estate
OEM=8
[8973]
Owner=Impremed
OEM=4
[8974]
Owner=Barranca Antonio
OEM=8
[8975]
Owner=Petrolo Santina
OEM=8
[8989]
Owner=Guimatrag
OEM=0
[8990]
Owner=BUSTAPLAST FLEXIBLE PACKAGING SRL
OEM=1
[8991]
Owner=Verga
OEM=1
[8992]
Owner=Eurobica
OEM=1
[8993]
Owner=CATTANEO CARNI & CO.MA.RI.
OEM=1
@ -3247,18 +3274,48 @@ OEM=0
[8995]
Owner=Associazione Industriali Piacenza
OEM=1
[8997]
Owner=Folloni Gianluca
OEM=1
[8998]
Owner=BIESSE SOCIETA' COOPERATIVA
OEM=1
[8999]
Owner=CO.GE.F. SRL SOC.UNIPERSONALE
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]
Owner=Scuola Materna di Prato di Correggio
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]
Owner=G.G. Trasporti s.r.l.
OEM=1
[9022]
Owner=SICIM SUCCURSAL DE ESPANA
OEM=1
[9023]
Owner=Barbarini
OEM=1
@ -3266,7 +3323,7 @@ OEM=1
Owner=F.C.F. New Construction Nautica srl
OEM=1
[9025]
Owner=Barbarini
Owner=BARBARINI & C. SRL
OEM=1
[9999]
pd0300 -0=31-12-3000

View File

@ -682,11 +682,11 @@ void CampoWizardPage4::OnSSAPick(wxCommandEvent& e)
const int nSerial = wxAtoi(strSerial);
if (nSerial > 1000 && nSerial < 10000)
{
wxString path("./SSAGetInfo.exe -nome ");
wxString path("./SSAGetInfo.exe -nome c:/");
path << strSerial;
wxExecute(path, wxEXEC_SYNC);
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.");
MessageBox(msg);
@ -855,7 +855,7 @@ int CampoWizardPage4::DongleTest()
if (serno == 0xFFFF)
{
wxString strSSA = wxFindFirstFile("*.ssax");
wxString strSSA = wxFindFirstFile("c:\\*.ssax");
if (!strSSA.IsEmpty())
{
strSSA = strSSA.After('\\');

View File

@ -377,7 +377,6 @@ int TMotore_application::read( TMask& m )
mask.reset_father_rows();
doc() = (TDocumento &)_rel->curr();
mask.update_father_rows(false);

View File

@ -1511,7 +1511,7 @@ void TMask_generator::genera( const TString& profilo )
_m->control( T_BOTTONE, DLG_PREVIEW, 202 );
_m->begin( );
_m->prompt( 5, 1, "Anteprima" );
_m->prompt( 5, 1, "Antepr." );
_m->picture(TOOL_PREVIEW);
_m->end( );
@ -1548,7 +1548,7 @@ void TMask_generator::genera( const TString& profilo )
_m->control( T_BOTTONE, DLG_PREVREC, 202 );
_m->begin( );
_m->prompt( 9, 1, "Indietro");
_m->prompt( 9, 1, "Prec.");
_m->message( "EXIT,305" );
_m->picture(TOOL_PREVREC);
_m->end( );
@ -1562,7 +1562,7 @@ void TMask_generator::genera( const TString& profilo )
_m->control( T_BOTTONE, DLG_NEXTREC, 202 );
_m->begin( );
_m->prompt( 11, 1, "Avanti");
_m->prompt( 11, 1, "Succ.");
_m->message( "EXIT,306" );
_m->picture(TOOL_NEXTREC);
_m->end( );

View File

@ -4,7 +4,7 @@
#include <applicat.h>
#include <automask.h>
#include <defmask.h>
#include <modaut.h>
#include <dongle.h>
#include <postman.h>
#include <progind.h>
#include <reprint.h>
@ -969,7 +969,7 @@ class TReport_doc_app : public TSkeleton_application
TReport_doc_mask* _msk;
int _anno;
TString16 _codnum; // codice numerazione / profilo
TString16 _codnum, _tipodoc; // codice numerazione / profilo
long _ndoc, _codcf;
char _tipocf;
bool _no_print_dlg;
@ -984,9 +984,9 @@ protected:
void print_trans(const char* ininame);
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;
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,
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;
@ -998,13 +998,24 @@ public:
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;
_codnum = cn;
_ndoc = nd;
_tipocf = tcf;
_codcf = cf;
if (doc)
{
_anno = doc->get(DOC_ANNO).as_int();
_codnum = doc->get(DOC_CODNUM).as_string();
_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
@ -1015,11 +1026,49 @@ bool TReport_doc_app::get_next_pdf(int anno, long ditta, const char* codnum, lon
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
{
TString8 key; key << _tipocf << '|' << _codcf;
const TString& maddr = cache().get(LF_CLIFO, key, CLI_DOCMAIL);
return maddr;
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;
to = cache().get(LF_CLIFO, key, CLI_DOCMAIL);
}
return to.full();
}
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)
{
to = get_mail_address();
ok = to.full();
ok = get_mail_address(to, cc);
if (ok)
{
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()
{
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;
return TSkeleton_application::create();
@ -1184,7 +1232,7 @@ bool TReport_doc_app::print_loop(TRecordset& doc, TOutput_mode mode, bool is_def
"Rispondendo NO verranno solo salvati gli allegati."));
}
const bool mail_requested = (mode == out_mail || mode == out_signed_mail);
const bool mail_requested = (mode == out_mail || mode == out_signed_mail);
for (short loop = mail_requested ? 0 : 1; loop < 2; loop++)
{
@ -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);
arc = cn.auto_archive();
}
set_next_pdf(doc.get(DOC_ANNO).as_int(), doc.get(DOC_CODNUM).as_string(),
doc.get(DOC_NDOC).as_int(), doc.get(DOC_TIPOCF).as_string()[0],
doc.get(DOC_CODCF).as_int());
set_next_pdf(&doc);
// const bool send_mail = ( mode == out_mail || mode == out_signed_mail) && get_mail_address().full();
const bool send_mail = mail_requested && get_mail_address().full();
TToken_string to, cc;
const bool send_mail = mail_requested && get_mail_address(to, cc);
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
@ -1247,8 +1293,9 @@ bool TReport_doc_app::print_loop(TRecordset& doc, TOutput_mode mode, bool is_def
mail_book->archive(NULL, signature);
TString mesg;
TToken_string to, cc; get_mail_address(to, cc);
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);
}
}
@ -1333,7 +1380,7 @@ bool TReport_doc_app::print_loop(TRecordset& doc, TOutput_mode mode, bool is_def
if (book.pages() > 0)
{
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)
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:
{
TFilename pdf; pdf.tempdir();
pdf << SLASH << _anno <<'_' << _codnum << '_' << _ndoc;
pdf << SLASH << _anno << '_' << _codnum << '_' << _ndoc;
pdf.ext("pdf");
if (book.export_pdf(pdf, mode == out_signed_pdf))
xvt_sys_goto_url(pdf, "open");

View File

@ -87,8 +87,7 @@ protected: // TApplication
void set_options();
void generate();
public:
TGenerazioneEffetti_app() {_msk = NULL; _num_sheet = NULL;}
virtual ~TGenerazioneEffetti_app() { }
TGenerazioneEffetti_app() : _msk(NULL), _num_sheet(NULL) {}
};
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();
bool found = FALSE;
const TString16 tipo(doc->tipo().codice());
const TString4 tipo(doc->tipo().codice());
const char stato = doc->stato();
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)
// Cambia lo stato del documento
{
doc->stato(_final_doc_status);
return doc->rewrite();
int err = 0;
if (doc->stato() != _final_doc_status)
{
doc->stato(_final_doc_status);
err = doc->rewrite();
}
return err;
}
@ -459,10 +463,11 @@ void TGenerazioneEffetti_app::generate()
set_options();
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
{
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
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);
TString msg;
const long cur_items = doc_cur.items(); // Scorre tutti i documenti che rientrano nell'intervallo selezionato
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;
}
TString msg;
msg << "Selezione documenti " << codnum;
if (sort_by_date)
{
@ -535,14 +541,17 @@ void TGenerazioneEffetti_app::generate()
// altrimenti compone una lista dei documenti da raggruppare
// - alla fine del ciclo per numerazioni scorre la lista residua e genera gli
// 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;
TDocumento* doc = new TDocumento;
if (doc->read(doc_cur.curr()) == NOERR && // legge il documento
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
if (doc_cur.curr().get(DOC_CODNUM) != codnum)
continue;
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();
if (pag.code().not_empty())
@ -554,6 +563,7 @@ void TGenerazioneEffetti_app::generate()
TLista_documenti lista_in,lista_out;
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
gen_eff.set_writeable(FALSE);
@ -562,7 +572,7 @@ void TGenerazioneEffetti_app::generate()
else
{
add_to_group_list(doc); // Aggiorna la lista degli effetti da raggruppare
delete doc;
doc = NULL; // Non cancellarlo in quanto messo nella lista
}
}
else
@ -570,16 +580,15 @@ void TGenerazioneEffetti_app::generate()
int err = change_doc_status(doc); // Cambia lo stato al documento
if (err != NOERR)
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;
}
}
// 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
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)
message_box("Totale effetti generati: %ld", tot);

View File

@ -6,6 +6,7 @@
#define F_DATA_FIN 104
#define F_RAGGRUPPA 105
#define F_ORDERBY 106
#define F_SPEEDSTATUS 107
#define F_ANNO 201
#define F_CODNUM 202

View File

@ -1,138 +1,147 @@
#include "ve6300a.h"
TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_USER 10 2
BEGIN
PROMPT -23 -1 "~Selezione"
PICTURE TOOL_MULTISEL
END
#include <stdbar.h>
ENDPAGE
PAGE "Generazione effetti" 0 0 0 0
STRING F_CODICE_ELAB 8
BEGIN
PROMPT 1 1 "Codice elaborazione "
FLAG "U"
USE %ELD SELECT I0==5
INPUT CODTAB F_CODICE_ELAB
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@55" S0
OUTPUT F_CODICE_ELAB CODTAB
OUTPUT F_DESC_ELAB S0
CHECKTYPE REQUIRED
WARNING "E' necessario specificare il codice elaborazione"
END
STRING F_DESC_ELAB 50 40
BEGIN
PROMPT 34 1 ""
USE %ELD KEY 2 SELECT I0==5
INPUT S0 F_DESC_ELAB
DISPLAY "Descrizione@55" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_CODICE_ELAB
CHECKTYPE NORMAL
END
RADIOBUTTON F_ORDERBY 1 76
BEGIN
PROMPT 1 2 "Sequenza di ordinamento"
ITEM "0|Per data documento"
MESSAGE SHOW,1@|HIDE,2@
ITEM "1|Per numero documento"
MESSAGE SHOW,2@|HIDE,1@
FLAGS "Z"
END
GROUPBOX DLG_NULL 76 5
BEGIN
PROMPT 1 5 "Intervallo documenti"
END
DATE F_DATA_INI
BEGIN
PROMPT 2 7 "Data iniziale "
CHECKTYPE REQUIRED
WARNING "La data di inizio intervallo e' obbligatoria"
GROUP 1
END
DATE F_DATA_FIN
BEGIN
PROMPT 2 8 "Data finale "
CHECKTYPE REQUIRED
WARNING "La data di fine intervallo e' obbligatoria"
GROUP 1
END
NUMBER F_ANNO 4
BEGIN
PROMPT 2 6 "Anno "
CHECKTYPE REQUIRED
GROUP 2
FLAGS "A"
END
STRING F_CODNUM 3
BEGIN
PROMPT 14 6 "Numerazione "
FLAGS "BU"
CHECKTYPE REQUIRED
GROUP 2
END
STRING F_DESCNUM 50 40
BEGIN
PROMPT 34 6 ""
FLAGS "D"
GROUP 2
END
NUMBER F_NDOC_INI 7
BEGIN
PROMPT 2 7 "Documento iniziale "
USE LF_DOC
JOIN LF_CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF
INPUT PROVV "D"
INPUT ANNO F_ANNO SELECT
INPUT CODNUM F_CODNUM SELECT
INPUT NDOC F_NDOC_INI
DISPLAY "Numero" NDOC
DISPLAY "Data@10" DATADOC
DISPLAY "Tipo" TIPOCF
DISPLAY "Codice" CODCF
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
OUTPUT F_NDOC_INI NDOC
CHECKTYPE REQUIRED
WARNING "Numero documento errato"
GROUP 2
END
NUMBER F_NDOC_FIN 7
BEGIN
PROMPT 2 8 "Documento finale "
COPY USE F_NDOC_INI
INPUT PROVV "D"
INPUT ANNO F_ANNO SELECT
INPUT CODNUM F_CODNUM SELECT
INPUT NDOC F_NDOC_FIN
COPY DISPLAY F_NDOC_INI
OUTPUT F_NDOC_FIN NDOC
CHECKTYPE NORMAL
WARNING "Numero documento errato"
GROUP 2
END
BOOLEAN F_RAGGRUPPA
BEGIN
PROMPT 1 10 "Raggruppamento effetti"
END
ENDPAGE
ENDMASK
#include "ve6300a.h"
TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_USER 10 2
BEGIN
PROMPT -23 -1 "~Selezione"
PICTURE TOOL_MULTISEL
END
#include <elabar.h>
ENDPAGE
PAGE "Generazione effetti" 0 0 0 0
STRING F_CODICE_ELAB 8
BEGIN
PROMPT 1 1 "Codice elaborazione "
FLAG "U"
USE %ELD SELECT I0==5
INPUT CODTAB F_CODICE_ELAB
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@55" S0
OUTPUT F_CODICE_ELAB CODTAB
OUTPUT F_DESC_ELAB S0
CHECKTYPE REQUIRED
WARNING "E' necessario specificare il codice elaborazione"
END
STRING F_DESC_ELAB 50 40
BEGIN
PROMPT 34 1 ""
USE %ELD KEY 2 SELECT I0==5
INPUT S0 F_DESC_ELAB
DISPLAY "Descrizione@55" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_CODICE_ELAB
CHECKTYPE NORMAL
END
RADIOBUTTON F_ORDERBY 1 76
BEGIN
PROMPT 1 2 "Sequenza di ordinamento"
ITEM "0|Per data documento"
MESSAGE SHOW,1@|HIDE,2@
ITEM "1|Per numero documento"
MESSAGE SHOW,2@|HIDE,1@
FLAGS "Z"
END
GROUPBOX DLG_NULL 76 5
BEGIN
PROMPT 1 5 "Intervallo documenti"
END
DATE F_DATA_INI
BEGIN
PROMPT 2 7 "Data iniziale "
CHECKTYPE REQUIRED
WARNING "La data di inizio intervallo e' obbligatoria"
GROUP 1
END
DATE F_DATA_FIN
BEGIN
PROMPT 2 8 "Data finale "
CHECKTYPE REQUIRED
WARNING "La data di fine intervallo e' obbligatoria"
GROUP 1
END
NUMBER F_ANNO 4
BEGIN
PROMPT 2 6 "Anno "
CHECKTYPE REQUIRED
GROUP 2
FLAGS "A"
END
STRING F_CODNUM 4
BEGIN
PROMPT 14 6 "Numerazione "
FLAGS "BU"
CHECKTYPE REQUIRED
GROUP 2
END
STRING F_DESCNUM 50 40
BEGIN
PROMPT 34 6 ""
FLAGS "D"
GROUP 2
END
NUMBER F_NDOC_INI 7
BEGIN
PROMPT 2 7 "Documento iniziale "
USE LF_DOC
JOIN LF_CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF
INPUT PROVV "D"
INPUT ANNO F_ANNO SELECT
INPUT CODNUM F_CODNUM SELECT
INPUT NDOC F_NDOC_INI
DISPLAY "Numero" NDOC
DISPLAY "Data@10" DATADOC
DISPLAY "Tipo" TIPOCF
DISPLAY "Codice" CODCF
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
OUTPUT F_NDOC_INI NDOC
CHECKTYPE REQUIRED
WARNING "Numero documento errato"
GROUP 2
END
NUMBER F_NDOC_FIN 7
BEGIN
PROMPT 2 8 "Documento finale "
COPY USE F_NDOC_INI
INPUT PROVV "D"
INPUT ANNO F_ANNO SELECT
INPUT CODNUM F_CODNUM SELECT
INPUT NDOC F_NDOC_FIN
COPY DISPLAY F_NDOC_INI
OUTPUT F_NDOC_FIN NDOC
CHECKTYPE NORMAL
WARNING "Numero documento errato"
GROUP 2
END
BOOLEAN F_RAGGRUPPA
BEGIN
PROMPT 1 10 "Raggruppamento effetti"
MESSAGE FALSE DISABLE,F_SPEEDSTATUS
MESSAGE TRUE ENABLE,F_SPEEDSTATUS
END
BOOLEAN F_SPEEDSTATUS
BEGIN
PROMPT 1 11 "Cambio stato documenti veloce"
FLAGS "H"
END
ENDPAGE
ENDMASK

View File

@ -234,8 +234,8 @@ END
SPREADSHEET F_DEFAULTS
BEGIN
PROMPT 1 5 ""
ITEM "Campo@40"
ITEM "Valore@40"
ITEM "Campo@50"
ITEM "Valore@50"
END
ENDPAGE

View File

@ -554,7 +554,7 @@ public:
bool is_risorsa() const { return tipo().tipo() == RIGA_RISORSE;}
bool is_attrezzatura() const { return tipo().tipo() == RIGA_ATTREZZATURE;}
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_descrizione() const { return tipo().tipo() == RIGA_DESCRIZIONI;}
bool is_articolo() const;
@ -564,13 +564,12 @@ public:
bool is_evasa() const; // Ritorna vero se la riga è evasa
void checked(bool on = true) { put(RDOC_CHECKED, (bool)on); }
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
void set_doc(TDocumento * doc) { _doc = 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 void zero(const char * fieldname);
virtual void zero(char c = '\0');
@ -1033,7 +1032,7 @@ public:
static TAssoc_array & auto_reopen_nums() { return _auto_reopen_nums;}
static TAssoc_array & tipidoc_rels() { return _tipidoc_rels;}
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 save_father_rows();

View File

@ -1442,11 +1442,15 @@ const TRectype* TRiga_documento::find_original_rdoc() const
key.add(get(RDOC_DAANNO));
key.add(get(RDOC_DAPROVV));
key.add(get(RDOC_DANDOC));
for (int r = 1; ; r++)
for (int r = 0; ; r++)
{
key.add(r, 4);
if (r == 0)
key.add(id, 4);
else
key.add(r, 4);
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)
return &rec;
}

View File

@ -13,6 +13,11 @@
#include "../cg/cg2101.h"
#endif
#ifndef __RECARRAY_H
#include <recarray.h>
#endif
class TLista_documenti : public TObject // velib04
{
@ -565,7 +570,7 @@ protected:
// Scrive i record array degli effetti raggruppati
error_type write_groups(bool interattivo);
// 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
error_type change_doc_status(TDocumento&);
// Verifica se non ci sono stati errori
@ -575,7 +580,7 @@ public:
const TDate& data_elab, bool interattivo = false);
// 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; }
// void set_group(TAssoc_array& a) { _group_array = a; }
void set_writeable(const bool b) { _can_write = b; }

View File

@ -862,10 +862,8 @@ bool TContabilizzazione::load_parameters()
// il tutto.
if (_search_seq->empty_items())
{
error_box("Non e' abilitata alcuna ricerca per il conto di costo/ricavo in configurazione.");
return false;
}
return error_box(TR("Non e' abilitata alcuna ricerca per il conto di costo/ricavo in configurazione."));
_sc_enabled = conf.get_bool("GesSal","cg");
_in_enabled = dongle().active(INAUT);
_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
{
TString8 codcaus;
TString4 codcaus;
TToken_string key;
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)
// Compila la testata
{
TRectype& mov_rec = _movimento->curr();
const bool acquisto = doc.get_char(DOC_TIPOCF) == 'F';
// Reperisce la data documento
const TDate datadoc(doc.data());
@ -1272,8 +1268,8 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
}
// Dati del cliente...
TString4 tipocf(doc.get(DOC_TIPOCF));
long codcf = doc.get_long(DOC_CODCF);
const TString4 tipocf(doc.get(DOC_TIPOCF));
const long codcf = doc.get_long(DOC_CODCF);
TString80 occas;
{
TLocalisamfile& cli_file = _clifo->lfile();
@ -1304,8 +1300,8 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
// Codice pagamento
const TString4 codpag(doc.get(DOC_CODPAG));
if (sc_enabled(data_reg) || codpag.not_empty()) // La condizione di pagamento va controllata
{ // se e' abilitato il saldaconto o se e' stata inserita
if (sc_enabled(data_reg) || codpag.full()) // La condizione di pagamento va controllata
{ // se e' abilitato il saldaconto o se e' stata inserita
_cpg->put("CODTAB",codpag);
if (_cpg->read() != NOERR)
{
@ -1313,7 +1309,9 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
return _error;
}
}
// Mo' riempie il record della incornata (testata)
TRectype& mov_rec = _movimento->curr();
mov_rec.zero();
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);
@ -2666,29 +2664,67 @@ error_type TContabilizzazione::write_scadenze(TDocumento& doc)
// Scrive le scadenze. Liberamente tratto da cg2104.cpp.
{
const TRectype& head = _movimento->curr();
const long nreg = head.get_long(MOV_NUMREG);
// const real change(head.get_real(MOV_CAMBIO));
int anno = head.get_int(MOV_ANNOIVA);
if (head.get_real(MOV_TOTDOC) == ZERO)
if (head.get_real(MOV_TOTDOC).is_zero())
return _error;
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));
TString16 numpart;
TString8 numpart; // Max. 7 chars
if (_nump_cfg)
{
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
{
numpart = doc.get(DOC_NUMDOCRIF);
if (_caus->iva() == iva_vendite && !doc.tipo().nota_credito())
if (_caus->iva() == iva_vendite && !is_nc)
numpart.cut(0);
if (numpart.blank())
numpart = head.get(MOV_NUMDOC);
else
{
TDate ddr = doc.get_date(DOC_DATADOCRIF);
const TDate ddr = doc.get_date(DOC_DATADOCRIF);
if (ddr.ok())
anno = ddr.year();
}
@ -2894,7 +2930,7 @@ error_type TContabilizzazione::write_scadenze(TDocumento& doc)
{
const TRiga_partite& fatt = newgame->riga(p);
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)
break;
}

View File

@ -125,37 +125,66 @@ void TGenerazione_effetti::display_error(TDocumento& doc)
error_type TGenerazione_effetti::change_doc_status(TDocumento& doc)
// Cambia lo stato del documento
{
doc.stato(get("S4")[0]);
if (doc.rewrite() != NOERR)
_error = chg_stat_error;
const char stato_finale = get("S4")[0];
if (doc.stato() != stato_finale)
{
doc.stato(stato_finale);
if (doc.rewrite() != NOERR)
_error = chg_stat_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
{
const int items = group_array.items();
if (items > 0)
{
TProgind pi(items, "Cambio stato documenti", false);
_error = no_error;
TToken_string * group_element;
int i=0;
TString msg;
const char stato_finale = get_char("S4");
// 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())
{
if (!pi.addstatus(1))
break;
group_element->restart();
const int doc_items = group_element->items();
for (int j=0;j<doc_items;j++)
{
TToken_string t(group_element->get(j),'$');
char provv = t.get_char(0);
int anno = t.get_int(1);
TString codnum(t.get(2));
long numdoc = t.get_long(3);
if (doc.read(provv,anno,codnum,numdoc) == NOERR) // Legge il documento
const int anno = t.get_int(1);
const TString4 codnum(t.get(2));
const long numdoc = t.get_long(3);
msg.cut(0) << TR("Cambio stato documento ") << codnum << ' ' << anno << '/' << numdoc;
pi.set_text(msg);
if (fast)
{
doc.put(DOC_STATO,get("S4")[0]);
doc.rewrite();
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();
}
}
else
{
if (doc.read(provv,anno,codnum,numdoc) == NOERR) // Legge il documento
change_doc_status(doc);
}
}
}
@ -169,29 +198,39 @@ error_type TGenerazione_effetti::write_groups(bool interattivo)
int err = NOERR;
int i;
TString msg;
TProgind pi(items, "Scrittura effetti", false);
_error = no_error;
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];
const real importo = effetto.get_real(EFF_IMPORTO);
if (importo > ZERO) // Gli effetti negativi non vanno scritti
{
const char tipocf = effetto.get_char(EFF_TIPOCF);
const long codcf = effetto.get_long(EFF_CODCF);
TString key;
key.format("%c|%ld", tipocf, codcf);
real impmin;
if (!interattivo)
{
TString8 key; key.format("%c|%ld", tipocf, codcf);
impmin = real(cache().get(LF_CFVEN, key, CFV_IMPMINEFF));
if (impmin == ZERO)
if (impmin.is_zero())
impmin = _impmin;
}
if (effetto.get_int(EFF_TIPOPAG) == _rid || importo >= impmin)
{
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
_effetti_array.destroy(i);
}
@ -254,7 +293,7 @@ error_type TGenerazione_effetti::write_groups(bool interattivo)
// per l'effetto 5 vale la fattura 3.
// 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...
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");
#ifdef DBG
TProgind p(items,msg1,TRUE,TRUE,1);
TProgind p(items,msg1,TRUE,TRUE);
#else
TProgind p(items,msg1,FALSE,TRUE,1);
TProgind p(items,msg1,FALSE,TRUE);
#endif
TToken_string * group_element;
// 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())
{
#ifdef DBG
if (p.iscancelled()) break;
#endif
p.setstatus(i+1);
if (!p.setstatus(i+1))
break;
// Ciclo sui documenti da raggruppare
group_element->restart();
const int doc_items = group_element->items();
for (j=0;j<doc_items;j++)
{
#ifdef DBG
if (p.iscancelled()) break;
#endif
if (p.iscancelled())
break;
TToken_string t(group_element->get(j),'$');
const char provv = t.get_char(0);
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++)
{
TEffetto& effetto=(TEffetto&)_effetti_array[index];
const TEffetto& effetto = (const TEffetto&)_effetti_array[index];
if (datascad == effetto.get_date(EFF_DATASCAD))
break;
}
@ -482,17 +517,17 @@ long TGenerazione_effetti::group_bills(TAssoc_array& group_array, bool interatti
offset=_effetti_array.items();
} // Ciclo sui gruppi
p.close_modal();
// Cambia lo stato a tutti i documenti raggruppati
long tot = 0L;
if (_can_write)
{
xvtil_statbar_set("Scrittura effetti raggruppati in corso...");
do_events();
if (write_groups(interattivo) == no_error)
{
tot = _effetti_array.items();
change_group_status(doc, group_array);
change_group_status(doc, group_array, fast);
}
}
_effetti_array.destroy();

View File

@ -1397,7 +1397,6 @@ void TDocumento_mask::doc2mask(bool reload_clifo, bool force_load, bool update)
if (r.tipo().tipo() == RIGA_PRESTAZIONI)
{
const TSpesa_prest & spesa = r.spesa();
if (spesa.tipo() == 'V')
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())
{
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)
{
@ -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_IDRIGA));
real * qta = (real *) _father_rows.objptr(key);
real* qta = (real*)_father_rows.objptr(key);
if (qta == NULL)
{
qta = new real;
@ -3978,15 +3976,14 @@ void TDocumento_mask::update_father_rows(bool add)
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));
}
if(add)
*qta += value;
else
*qta -= value;
if (*qta == ZERO)
if (qta->is_zero())
_father_rows.remove(key);
}
}

View File

@ -546,18 +546,12 @@ int OsWin32_Help(WXHWND handle, const char* hlp, unsigned int cmd, const char* t
wxFileName fn = str;
fn.MakeAbsolute();
str = fn.GetFullPath();
unsigned long err = (unsigned long)::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);
}
::ShellExecute((HWND)handle, "open", str, NULL, NULL, SW_SHOWNORMAL);
}
return true;
}
OsWin32_Beep(1);
OsWin32_Beep(1); // Error beep
return false;
}