Correzioni su contratti di nolo

git-svn-id: svn://10.65.10.50/branches/R_10_00@22846 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2013-05-06 08:47:52 +00:00
parent 2c5d6aded2
commit 453890fd36
6 changed files with 42 additions and 26 deletions

View File

@ -770,7 +770,7 @@ bool THardy_elab_docs::genera_fat(const TMask& mask, TContratto_premi& contratto
const TString4 fat_codnum = ini_get_string(CONFIG_DITTA, "ha", "NaNoloNum"); const TString4 fat_codnum = ini_get_string(CONFIG_DITTA, "ha", "NaNoloNum");
const TString4 fat_tipodoc = ini_get_string(CONFIG_DITTA, "ha", "FtNoloTip"); const TString4 fat_tipodoc = ini_get_string(CONFIG_DITTA, "ha", "FtNoloTip");
const TString4 fat_codpag = ini_get_string(CONFIG_DITTA, "ha", "CodPagFat"); const TString4 fat_codpag = ini_get_string(CONFIG_DITTA, "ha", "CodPagFat");
const TString8 cod_riga = ini_get_string(CONFIG_DITTA, "ha", "FtNoloSpe"); const TString8 cod_spesa = ini_get_string(CONFIG_DITTA, "ha", "FtNoloSpe");
TDocumento fat(provv, datadoc.year(), fat_codnum, 0); //num_doc = 0 perchè viene aggiornato in fase di registrazione TDocumento fat(provv, datadoc.year(), fat_codnum, 0); //num_doc = 0 perchè viene aggiornato in fase di registrazione
fat.set_tipo(fat_tipodoc); fat.set_tipo(fat_tipodoc);
@ -778,15 +778,18 @@ bool THardy_elab_docs::genera_fat(const TMask& mask, TContratto_premi& contratto
fat.put(DOC_DATADOC, datadoc); fat.put(DOC_DATADOC, datadoc);
fat.put(DOC_TIPOCF, 'C'); fat.put(DOC_TIPOCF, 'C');
fat.put(DOC_CODCF, contratto.get(DOC_CODCF)); fat.put(DOC_CODCF, contratto.get(DOC_CODCF));
fat.cli2doc();
fat.put(DOC_CODAG, contratto.get(DOC_CODAG)); fat.put(DOC_CODAG, contratto.get(DOC_CODAG));
fat.put(DOC_CODPAG, fat_codpag);
fat.put(DOC_DOC1, contratto.get(DOC_NDOC)); fat.put(DOC_DOC1, contratto.get(DOC_NDOC));
fat.put(DOC_DATADOCRIF, contratto.get(DOC_DATADOC)); fat.put(DOC_DATADOCRIF, contratto.get(DOC_DATADOC));
fat.cli2doc(); fat.put(DOC_CODPAG, fat_codpag);
const TRectype& rec_spp = cache().get("SPP", cod_riga); const TRectype& rec_spp = cache().get("SPP", cod_spesa);
const TString4 tipo_riga_spp = rec_spp.get("S8");
const TString80 descr_riga_spp = rec_spp.get("S0"); const TString80 descr_riga_spp = rec_spp.get("S0");
const TString4 codiva = rec_spp.get("S3");
const TString4 tipo_riga_spp = rec_spp.get("S8");
TString msg_rata;
real importo = contratto.get_real(DOC_IMPPAGATO); real importo = contratto.get_real(DOC_IMPPAGATO);
const TDate recesso = contratto.data_recesso(); const TDate recesso = contratto.data_recesso();
@ -795,22 +798,33 @@ bool THardy_elab_docs::genera_fat(const TMask& mask, TContratto_premi& contratto
const real rate_da_pagare = contratto.get_int(DOC_NCOLLI) - contratto.get_int(DOC_NUMANT); const real rate_da_pagare = contratto.get_int(DOC_NCOLLI) - contratto.get_int(DOC_NUMANT);
importo *= rate_da_pagare; importo *= rate_da_pagare;
contratto.put(DOC_NUMANT, contratto.get(DOC_NCOLLI)); // Chiude contratto forzosamente contratto.put(DOC_NUMANT, contratto.get(DOC_NCOLLI)); // Chiude contratto forzosamente
msg_rata = TR("\nRata di cessazione contratto");
} }
else else
{
const TDate d = mask.get(F_ADATA);
contratto.add(DOC_NUMANT, UNO); // Incrementa numero di rate pagate contratto.add(DOC_NUMANT, UNO); // Incrementa numero di rate pagate
msg_rata << TR("\nRata ") << contratto.get(DOC_NUMANT) << '/' << contratto.get_int(DOC_NCOLLI)
<< ' ' << itom(d.month()) << ' ' << d.year();
}
if (provv == 'D') if (provv == 'D')
{ {
const int err = contratto.rewrite(); const int err = contratto.rewrite();
if (err != NOERR) if (err != NOERR)
log.log(2, TR("Impossibile aggiornare il numero di rate pagate sul cotratto")); log.log(2, TR("Impossibile aggiornare il numero di rate pagate sul contratto"));
} }
TRiga_documento& rdoc = fat.new_row(tipo_riga_spp); TRiga_documento& rdoc = fat.new_row(tipo_riga_spp);
rdoc.put(RDOC_CODART, cod_riga); rdoc.put(RDOC_CODART, cod_spesa);
rdoc.put(RDOC_DESCR, descr_riga_spp); rdoc.put(RDOC_DESCR, descr_riga_spp);
rdoc.put(RDOC_DESCEST, msg_rata);
rdoc.put(RDOC_DESCLUNGA, "X");
rdoc.put(RDOC_QTA, UNO); rdoc.put(RDOC_QTA, UNO);
rdoc.put(RDOC_PREZZO, importo); rdoc.put(RDOC_PREZZO, importo);
rdoc.put(RDOC_CODIVA, codiva);
const int err = fat.write(); const int err = fat.write();

View File

@ -493,8 +493,7 @@ void TIni2Txt::genera_sospeso_var_txt(TConfig& ini, TString_array& ini_paragraph
void TIni2Txt::main_loop() void TIni2Txt::main_loop()
{ {
//stabilisce una volta per tutte ad inizio programma quale cavolo è la directory dove sbattere i .txt generati //stabilisce una volta per tutte ad inizio programma quale cavolo è la directory dove sbattere i .txt generati
TConfig hardy(CONFIG_DITTA, "ha"); _output_dir = ini_get_string(CONFIG_DITTA, "ha", "OutputPath");
_output_dir = hardy.get("OutputPath");
//dalla riga di comando raccatta il path completo del file .ini da tradurre //dalla riga di comando raccatta il path completo del file .ini da tradurre
TFilename path = argv(2); TFilename path = argv(2);

View File

@ -36,9 +36,8 @@ bool TFile2Txt_mask::on_field_event(TOperable_field& o, TField_event e, long jol
{ {
//in base alla configurazione Hardyca completa i campi chiave sulla maschera così che, in caso.. //in base alla configurazione Hardyca completa i campi chiave sulla maschera così che, in caso..
//..l'utonto decida di fare una ricerca sui documenti, gli appaiano solo quelli buoni per il trasferimento! //..l'utonto decida di fare una ricerca sui documenti, gli appaiano solo quelli buoni per il trasferimento!
TConfig config(CONFIG_DITTA, "ha"); const TString4 codnum = ini_get_string(CONFIG_DITTA, "ha", "CarDocNum");
const TString& codnum = config.get("CarDocNum"); const TString4 stato = ini_get_string(CONFIG_DITTA, "ha", "CarDocSta");
const TString& stato = config.get("CarDocSta");
set(F_CODNUM, codnum); set(F_CODNUM, codnum);
set(F_STATO, stato); set(F_STATO, stato);
@ -264,7 +263,7 @@ bool TFile2Txt::curr_cod_list(long codcf, TString& codlist, TString& promo) cons
TLocalisamfile clifo(LF_CFVEN); TLocalisamfile clifo(LF_CFVEN);
clifo.put(CFV_TIPOCF, 'C'); clifo.put(CFV_TIPOCF, 'C');
clifo.put(CFV_CODCF, codcf); clifo.put(CFV_CODCF, codcf);
if (clifo.read(_isequal, _lock) == NOERR) if (clifo.read(_isequal, _testandlock) == NOERR)
{ {
clifo.put(CFV_CODLIST, codlist); clifo.put(CFV_CODLIST, codlist);
clifo.rewrite(); clifo.rewrite();

View File

@ -200,8 +200,8 @@ void THardy_transaction::main_loop()
bool THardy_transaction::create() bool THardy_transaction::create()
{ {
TConfig config(CONFIG_DITTA, "ha"); TConfig config(CONFIG_DITTA, "ha");
_output_path = config.get("OutputPath"); _output_path = config.get("OutputPath");
_input_path = config.get("InputPath"); _input_path = config.get("InputPath");
_archive_path = config.get("ArchivePath"); _archive_path = config.get("ArchivePath");
if (!_output_path.exist()) if (!_output_path.exist())
@ -226,6 +226,8 @@ bool THardy_transaction::create()
return error_box(FR("Non esiste la cartella di transazione %s!"), (const char*)_trans_path); return error_box(FR("Non esiste la cartella di transazione %s!"), (const char*)_trans_path);
*/ */
open_files(LF_TABCOM, LF_TAB, LF_CLIFO, LF_DOC, LF_RIGHEDOC, LF_SVRIEP, 0);
return TSkeleton_application::create(); return TSkeleton_application::create();
} }

View File

@ -1002,16 +1002,14 @@ void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log
const TString& str_datadoc = recset.get(DOC_DATADOC).as_string(); const TString& str_datadoc = recset.get(DOC_DATADOC).as_string();
const TDate datadoc = upload_format_date6(str_datadoc); const TDate datadoc = upload_format_date6(str_datadoc);
//2a) tipo documento //2a) tipo documento
TString4 tipodoc; TString4 tipodoc;
TConfig hardy(CONFIG_DITTA, "ha");
switch (rec_tipodoc) switch (rec_tipodoc)
{ {
case 'F': tipodoc = hardy.get("InpFatTip"); break; //Fatture case 'F': tipodoc = ini_get_string(CONFIG_DITTA, "ha", "InpFatTip"); break; //Fatture
case 'B': tipodoc = hardy.get("InpBolTip"); break; //Bolle case 'B': tipodoc = ini_get_string(CONFIG_DITTA, "ha", "InpBolTip"); break; //Bolle
case 'V': tipodoc = hardy.get("InpValTip"); break; //bolle Valorizzate: attenzione!! devono essere trasformate in 'B'olle alla creazione della numerazione di Campo case 'V': tipodoc = ini_get_string(CONFIG_DITTA, "ha", "InpValTip"); break; //bolle Valorizzate: attenzione!! devono essere trasformate in 'B'olle alla creazione della numerazione di Campo
case 'O': tipodoc = hardy.get("InpOrdTip"); break; //Ordini case 'O': tipodoc = ini_get_string(CONFIG_DITTA, "ha", "InpOrdTip"); break; //Ordini
default: default:
{ {
_can_write = false; _can_write = false;
@ -1040,7 +1038,8 @@ void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log
const long ndoc = recset.get(DOC_NDOC).as_int(); const long ndoc = recset.get(DOC_NDOC).as_int();
TDocumento doc('D', datadoc.year(), codnum, ndoc); TDocumento doc;
doc.read('D', datadoc.year(), codnum, ndoc, _isequal, _can_write ? _lock : _nolock);
//2c) tipo documento e data documento //2c) tipo documento e data documento
doc.put(DOC_TIPODOC, tipodoc); doc.put(DOC_TIPODOC, tipodoc);
@ -1190,6 +1189,10 @@ void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log
rigadoc.put(RDOC_CODMAG, codmag); //questo viene dall'agente ed è stato preso all'inizio del metodo rigadoc.put(RDOC_CODMAG, codmag); //questo viene dall'agente ed è stato preso all'inizio del metodo
} }
const real totdoc = doc.totale_doc();
if (totdoc.is_zero())
doc.put(DOC_STATO, 5); // Evita problemi di contabilizzazione dei documenti nulli
//incredibilmente arriva in fondo //incredibilmente arriva in fondo
TString msg; TString msg;
msg << datadoc.year() << "-" << codnum << "-" << ndoc << " Terminale: " << codice_terminale << " Cliente: " << codcf; msg << datadoc.year() << "-" << codnum << "-" << ndoc << " Terminale: " << codice_terminale << " Cliente: " << codcf;
@ -1233,7 +1236,7 @@ void TUpload2Campo::elabora_RC(THardy_upload_recordset& recset, TLog_report& log
//2a) numerazione e tipo documento //2a) numerazione e tipo documento
TConfig hardy(CONFIG_DITTA, "ha"); TConfig hardy(CONFIG_DITTA, "ha");
const TString4 codnum = hardy.get("CarDocNum"); const TString4 codnum = hardy.get("CarDocNum");
const TString4 tipodoc = hardy.get("CarDocTip"); const TString4 tipodoc = hardy.get("CarDocTip");
//2b) documento vero e proprio (stessi campi del caso tipo record = TF) //2b) documento vero e proprio (stessi campi del caso tipo record = TF)

View File

@ -1,6 +1,6 @@
#include "ha1300a.h" #include "ha1300a.h"
PAGE "Importazione dati da file upload" -1 -1 78 9 PAGE "Importazione dati da file upload" -1 -1 78 11
STRING F_INPUT_PATH 256 46 STRING F_INPUT_PATH 256 46
BEGIN BEGIN
@ -26,12 +26,11 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
RADIOBUTTON F_DEFINITIVO 73 RADIOBUTTON F_DEFINITIVO 1 75
BEGIN BEGIN
PROMPT 1 6 "Tipo elaborazione" PROMPT 1 6 "Tipo elaborazione"
ITEM "0|Di prova (simulazione)" ITEM "0|Di prova (simulazione)"
ITEM "1|Definitiva (scrittura sul database)" ITEM "1|Definitiva (scrittura sul database)"
FLAGS "Z"
FIELD Definitiva FIELD Definitiva
END END