Patch level :10.0
Files correlati : Ricompilazione Demo : [ ] Commento :riporto hardy dalla 11 (esportazione sospesivar) git-svn-id: svn://10.65.10.50/branches/R_10_00@21010 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									0f1e5bec87
								
							
						
					
					
						commit
						bed09775ba
					
				
							
								
								
									
										133
									
								
								ha/ha1100.cpp
									
									
									
									
									
								
							
							
						
						
									
										133
									
								
								ha/ha1100.cpp
									
									
									
									
									
								
							@ -5,6 +5,9 @@
 | 
			
		||||
#include <utility.h>
 | 
			
		||||
 | 
			
		||||
#include <comuni.h>
 | 
			
		||||
#include <pagsca.h>
 | 
			
		||||
#include <partite.h>
 | 
			
		||||
#include <scadenze.h>
 | 
			
		||||
#include "../mg/umart.h"
 | 
			
		||||
 | 
			
		||||
#include "halib.h"
 | 
			
		||||
@ -52,11 +55,15 @@ protected:
 | 
			
		||||
 | 
			
		||||
  //metodi di medio livello
 | 
			
		||||
  void crea_nome_txt(const TString& prefisso, TFilename& output_path);
 | 
			
		||||
  void get_part_key(TConfig& ini, TToken_string& key) const;
 | 
			
		||||
  bool find_part_key(TConfig& ini, const TString_array& ini_paragraphs, 
 | 
			
		||||
                     const int logicnum, const TToken_string& key) const;
 | 
			
		||||
 | 
			
		||||
  //metodi di alto livello
 | 
			
		||||
  void genera_cliente_txt(TConfig& ini);
 | 
			
		||||
  void genera_riga_listino_txt(TConfig& ini);
 | 
			
		||||
  void genera_prodotto_txt(TConfig& ini);
 | 
			
		||||
  void genera_sospeso_txt(TConfig& ini, TString_array& ini_paragraphs);
 | 
			
		||||
 | 
			
		||||
  virtual void main_loop();
 | 
			
		||||
 | 
			
		||||
@ -336,11 +343,133 @@ void TIni2Txt::genera_prodotto_txt(TConfig& ini)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void TIni2Txt::get_part_key(TConfig& ini, TToken_string& key) const
 | 
			
		||||
{
 | 
			
		||||
  //tracciato: tipocf-sottoconto(=codcf)-anno-numpart-nriga
 | 
			
		||||
  key.cut(0);
 | 
			
		||||
  key.add(ini.get(PART_TIPOCF));
 | 
			
		||||
  key.add(ini.get(PART_SOTTOCONTO));
 | 
			
		||||
  key.add(ini.get_int(PART_ANNO));
 | 
			
		||||
  key.add(ini.get(PART_NUMPART));
 | 
			
		||||
  key.add(ini.get_int(PART_NRIGA));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
bool TIni2Txt::find_part_key(TConfig& ini, const TString_array& ini_paragraphs, 
 | 
			
		||||
                             const int logicnum, const TToken_string& key) const
 | 
			
		||||
{
 | 
			
		||||
  TString4 start;
 | 
			
		||||
  start << logicnum << ',';
 | 
			
		||||
 | 
			
		||||
  //cerca i pagamenti della partita
 | 
			
		||||
  FOR_EACH_ARRAY_ROW(ini_paragraphs, t, row)
 | 
			
		||||
  {
 | 
			
		||||
    if (row->starts_with(start))
 | 
			
		||||
    {
 | 
			
		||||
      TToken_string key_row;
 | 
			
		||||
      ini.set_paragraph(*row);
 | 
			
		||||
      get_part_key(ini, key_row);
 | 
			
		||||
      if (key_row == key)
 | 
			
		||||
        return true;
 | 
			
		||||
    } //if (part_row->starts_with("30...
 | 
			
		||||
  } //FOR_EACH_ARRAY_ROW(ini_paragraphs, t...
 | 
			
		||||
  return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TIni2Txt::genera_sospeso_txt(TConfig& ini, TString_array& ini_paragraphs)
 | 
			
		||||
{
 | 
			
		||||
  TEsporta_sospesiVAR_recordset sospeso;
 | 
			
		||||
  sospeso.new_rec("");
 | 
			
		||||
 | 
			
		||||
  const TString4 segno = ricava_segno(ini);
 | 
			
		||||
 | 
			
		||||
  //delirio di campi da part (28) pagsca (29) scad(30)
 | 
			
		||||
  //--------------------------------------------------
 | 
			
		||||
  //ricava il numreg dal mov
 | 
			
		||||
  const long numreg = ini.get_long(MOV_NUMREG, "23");
 | 
			
		||||
  TAssoc_array clienti;
 | 
			
		||||
 | 
			
		||||
  //costruisce la lista dei clienti presenti nel .ini
 | 
			
		||||
  FOR_EACH_ARRAY_ROW(ini_paragraphs, r, riga)
 | 
			
		||||
  {
 | 
			
		||||
    if (riga->starts_with("28,"))
 | 
			
		||||
    {
 | 
			
		||||
      const long part_numreg = ini.get_long(PART_NREG, *riga);  //va specificata il paragrafo alla prima get
 | 
			
		||||
      const char tipocf = ini.get_char(PART_TIPOCF);
 | 
			
		||||
      if (numreg == part_numreg && tipocf == 'C')
 | 
			
		||||
        clienti.add(ini.get(PART_SOTTOCONTO));
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  FOR_EACH_ARRAY_ROW(ini_paragraphs, s, part_row)
 | 
			
		||||
  {
 | 
			
		||||
    if (part_row->starts_with("28,"))
 | 
			
		||||
    {
 | 
			
		||||
      const int tipomov = ini.get_int(PART_TIPOMOV, *part_row);
 | 
			
		||||
      const char tipocf = ini.get_char(PART_TIPOCF);
 | 
			
		||||
      const TString8 codcf = ini.get(PART_SOTTOCONTO);
 | 
			
		||||
      const bool part_chiusa = ini.get_bool(PART_CHIUSA);
 | 
			
		||||
      //cerca le partite, derivanti da fatture, dei soli clienti che ha nella lista clienti
 | 
			
		||||
      if (!part_chiusa && tipomov == 1 && tipocf == 'C' && clienti.is_key(codcf))
 | 
			
		||||
      {
 | 
			
		||||
        TToken_string key;
 | 
			
		||||
        get_part_key(ini, key);
 | 
			
		||||
        
 | 
			
		||||
        const long numfatt = ini.get_long(PART_NUMDOC);
 | 
			
		||||
        const TDate datadoc = ini.get(PART_DATADOC);
 | 
			
		||||
        const TString8 numpart = key.get(3);
 | 
			
		||||
 | 
			
		||||
        //cerca i pagamenti della rata
 | 
			
		||||
        if (find_part_key(ini, ini_paragraphs, LF_SCADENZE, key))
 | 
			
		||||
        {
 | 
			
		||||
          real imp_rata = ini.get(SCAD_IMPORTO);
 | 
			
		||||
          const TDate data_rata = ini.get(SCAD_DATASCAD);
 | 
			
		||||
          real imp_pag;
 | 
			
		||||
          if (find_part_key(ini, ini_paragraphs, LF_PAGSCA, key))
 | 
			
		||||
          {
 | 
			
		||||
            const char acc_sal = ini.get(PAGSCA_ACCSAL)[0];
 | 
			
		||||
            imp_pag = acc_sal == 'S' ? imp_rata : real(ini.get(PAGSCA_IMPORTO));
 | 
			
		||||
          }
 | 
			
		||||
          //se il pagamento non chiude la rata -> il saldo resta in sospeso e il record va aggiunto
 | 
			
		||||
          if (imp_pag < imp_rata)
 | 
			
		||||
          {
 | 
			
		||||
            real residuo = imp_rata - imp_pag;
 | 
			
		||||
 | 
			
		||||
            //riempie il record da esportare
 | 
			
		||||
            sospeso.set("CodiceTerminale", 0L);
 | 
			
		||||
            sospeso.set("Segno", segno);
 | 
			
		||||
            sospeso.set("CodiceCliente", codcf);
 | 
			
		||||
            sospeso.set("NumeroFattura", numfatt);
 | 
			
		||||
            sospeso.set("DataFattura", format_data_6(datadoc));
 | 
			
		||||
            residuo *= CENTO;
 | 
			
		||||
            residuo.round();
 | 
			
		||||
            sospeso.set("ImportoResiduo", residuo);
 | 
			
		||||
            imp_rata.round();
 | 
			
		||||
            sospeso.set("ImpOriginalDoc", imp_rata);
 | 
			
		||||
            sospeso.set("DataScadenza", format_data_6(data_rata));
 | 
			
		||||
            sospeso.set("TipoDocumento", "F");
 | 
			
		||||
          }
 | 
			
		||||
        } //if (find_part_key(ini, ini_paragraphs, LF_SCADENZE...
 | 
			
		||||
      } //if (tipomov == 1 && tipocf...
 | 
			
		||||
    } //if (part_row->starts_with("28,...
 | 
			
		||||
  } //FOR_EACH_ARRAY_ROW(ini_paragraphs, s...
 | 
			
		||||
 | 
			
		||||
  //prepara il nome corretto del file .txt da generare
 | 
			
		||||
  //--------------------------------------------------
 | 
			
		||||
  const TString prefisso = "sospesivar";
 | 
			
		||||
  TFilename output_path;
 | 
			
		||||
  crea_nome_txt(prefisso, output_path);
 | 
			
		||||
 | 
			
		||||
  sospeso.save_as(output_path, fmt_text);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void TIni2Txt::main_loop()
 | 
			
		||||
{
 | 
			
		||||
  //stabilisce una volta per tutte ad inizio programma quale cavolo è la directory dove sbattere i .txt generati
 | 
			
		||||
  TConfig hardy(CONFIG_DITTA, "ha");
 | 
			
		||||
  _output_dir = hardy.get("OuputPath");
 | 
			
		||||
  _output_dir = hardy.get("OutputPath");
 | 
			
		||||
 | 
			
		||||
  //dalla riga di comando raccatta il path completo del file .ini da tradurre
 | 
			
		||||
  TFilename path = argv(2);
 | 
			
		||||
@ -358,6 +487,8 @@ void TIni2Txt::main_loop()
 | 
			
		||||
      genera_cliente_txt(input_ini_file);
 | 
			
		||||
 | 
			
		||||
    //sospesi
 | 
			
		||||
    if (ini_paragraphs.find("28,1,1") >= 0)
 | 
			
		||||
      genera_sospeso_txt(input_ini_file, ini_paragraphs);
 | 
			
		||||
 | 
			
		||||
    //listino
 | 
			
		||||
    if (ini_paragraphs.find("52") >= 0)
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,8 @@
 | 
			
		||||
#include <progind.h>
 | 
			
		||||
 | 
			
		||||
#include <comuni.h>
 | 
			
		||||
 | 
			
		||||
#include <scadenze.h>
 | 
			
		||||
#include "../cg/cgsaldac.h"
 | 
			
		||||
#include "../ve/condv.h"
 | 
			
		||||
 | 
			
		||||
#include "halib.h"
 | 
			
		||||
@ -211,6 +212,57 @@ void TFile2Txt::genera_clienti_txt()
 | 
			
		||||
 | 
			
		||||
void TFile2Txt::genera_sospesi_txt()
 | 
			
		||||
{
 | 
			
		||||
  TEsporta_sospesi_recordset sospesi;
 | 
			
		||||
 | 
			
		||||
  TString query;
 | 
			
		||||
  query << "USE PART";
 | 
			
		||||
  query << "\nSELECT (CHIUSA!=\"X\")&&(TIPOMOV=1)";
 | 
			
		||||
  query << "\nFROM TIPOC=C";
 | 
			
		||||
  query << "\nTO TIPOC=C";
 | 
			
		||||
 | 
			
		||||
  TISAM_recordset archivio_part(query);
 | 
			
		||||
  const long archivio_part_items = archivio_part.items();
 | 
			
		||||
 | 
			
		||||
  TProgind progind(archivio_part_items, "Sospesi...", false, true);
 | 
			
		||||
  for (bool ok = archivio_part.move_first(); ok; ok = archivio_part.move_next())
 | 
			
		||||
  {
 | 
			
		||||
    progind.addstatus(1);
 | 
			
		||||
 | 
			
		||||
    sospesi.new_rec("");
 | 
			
		||||
 | 
			
		||||
    sospesi.set("CodiceTerminale", 0L);
 | 
			
		||||
 | 
			
		||||
    //per riempire i campi è necessario un po' di casino sulla partita in esame
 | 
			
		||||
    const TRectype& rec_part = archivio_part.cursor()->curr();
 | 
			
		||||
    TPartita partita(rec_part);
 | 
			
		||||
    //cerca il saldo, il totale del doc originale, il residuo
 | 
			
		||||
    TImporto saldo, doc, pag, imp;
 | 
			
		||||
    partita.calcola_saldo(saldo, doc, pag, imp);
 | 
			
		||||
    TImporto residuo = doc;
 | 
			
		||||
    residuo -= saldo;
 | 
			
		||||
 | 
			
		||||
    const int nriga = rec_part.get_int(PART_NRIGA);
 | 
			
		||||
    const TRiga_scadenze& scad = partita.rata(nriga, 1);
 | 
			
		||||
    const TDate datascad = scad.get_date(SCAD_DATASCAD);
 | 
			
		||||
 | 
			
		||||
    //e vai che riempiamo i campi
 | 
			
		||||
    const TString& codcf = rec_part.get(PART_SOTTOCONTO);
 | 
			
		||||
    sospesi.set("CodiceCliente", codcf);
 | 
			
		||||
    const TString& ndoc = rec_part.get(PART_NUMDOC);
 | 
			
		||||
    sospesi.set("NumeroFattura", ndoc);
 | 
			
		||||
    const TDate datadoc = rec_part.get_date(PART_DATADOC);
 | 
			
		||||
    sospesi.set("DataFattura", format_data_6(datadoc));
 | 
			
		||||
    sospesi.set("ImportoResiduo", residuo.valore());
 | 
			
		||||
    sospesi.set("ImpOriginalDoc", doc.valore());
 | 
			
		||||
    sospesi.set("DataScadenza", format_data_6(datascad));
 | 
			
		||||
    TString16 cod_partita;
 | 
			
		||||
    cod_partita << rec_part.get_int(PART_ANNO) << "-" << rec_part.get(PART_NUMPART);
 | 
			
		||||
    sospesi.set("Partita", cod_partita);
 | 
			
		||||
    sospesi.set("TipoDoc", "F");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  TFilename output_path = genera_path("sospesi");
 | 
			
		||||
  sospesi.save_as(output_path, fmt_text);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//listini: i commenti del metodo sono nella genera_listino_txt() della ha1100
 | 
			
		||||
@ -291,9 +343,9 @@ void TFile2Txt::genera_contratti_txt()
 | 
			
		||||
    righe_contratti.set(RCONDV_SCONTO, find_sconto(str_sconto));
 | 
			
		||||
 | 
			
		||||
    TDate dataini = archivio_rcondv.get("CONDV.VALIN").as_date();
 | 
			
		||||
    righe_contratti.set(CONDV_VALIN, dataini.string(full, '\0'));
 | 
			
		||||
    righe_contratti.set(CONDV_VALIN, format_data_8(dataini));
 | 
			
		||||
    TDate datafine = archivio_rcondv.get("CONDV.VALFIN").as_date();
 | 
			
		||||
    righe_contratti.set(CONDV_VALFIN, datafine.string(full, '\0'));
 | 
			
		||||
    righe_contratti.set(CONDV_VALFIN, format_data_8(datafine));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  TFilename output_path = genera_path("particolari");
 | 
			
		||||
 | 
			
		||||
@ -42,6 +42,8 @@ class TUpload2Campo : public TSkeleton_application
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
  void elabora_SU(THardy_upload_recordset& recset, TLog_report& log);
 | 
			
		||||
  void elabora_BR(THardy_upload_recordset& recset, TLog_report& log);
 | 
			
		||||
  void elabora_VC(THardy_upload_recordset& recset, TLog_report& log);
 | 
			
		||||
 | 
			
		||||
  void elabora(const TMask& mask);
 | 
			
		||||
 | 
			
		||||
@ -53,6 +55,32 @@ public:
 | 
			
		||||
 | 
			
		||||
void TUpload2Campo::elabora_SU(THardy_upload_recordset& recset, TLog_report& log)
 | 
			
		||||
{
 | 
			
		||||
  const TString& cod_term = recset.get("CodiceTerminale").as_string();
 | 
			
		||||
  const TString& cod_age = recset.get(AGE_CODAGE).as_string();
 | 
			
		||||
  const TString& descr_age = recset.get(AGE_RAGSOC).as_string();
 | 
			
		||||
  TString msg;
 | 
			
		||||
  msg << "Scartati dati agente " << cod_term << " " << descr_age;
 | 
			
		||||
  log.log(0, msg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TUpload2Campo::elabora_BR(THardy_upload_recordset& recset, TLog_report& log)
 | 
			
		||||
{
 | 
			
		||||
  const TString& cod_term = recset.get("CodiceTerminale").as_string();
 | 
			
		||||
  const long ndoc = recset.get("NumeroDoc").as_int();
 | 
			
		||||
  TString msg;
 | 
			
		||||
  msg << "Scartato movimento magazzino. Terminale: " << cod_term << " N.Doc: " << ndoc;
 | 
			
		||||
  log.log(0, msg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void TUpload2Campo::elabora_VC(THardy_upload_recordset& recset, TLog_report& log)
 | 
			
		||||
{
 | 
			
		||||
  const TString& cod_term = recset.get("CodiceTerminale").as_string();
 | 
			
		||||
  const TString& codcf = recset.get(CLI_CODCF).as_string();
 | 
			
		||||
  const TString& ragsoc = recset.get(CLI_RAGSOC).as_string();
 | 
			
		||||
  TString msg;
 | 
			
		||||
  msg << "Scartato nuovo cliente. Terminale: " << cod_term << " CodCli: " << codcf << " Ragsoc: " << ragsoc;
 | 
			
		||||
  log.log(0, msg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -89,14 +117,19 @@ void TUpload2Campo::elabora(const TMask& mask)
 | 
			
		||||
      elabora_SU(recset, log);
 | 
			
		||||
      break;
 | 
			
		||||
    case 1: //tipo record: TF (Testata Fattura)
 | 
			
		||||
      //elabora_TF(recset, log);
 | 
			
		||||
      break;
 | 
			
		||||
    case 2: //tipo record: RF (Riga Fattura)
 | 
			
		||||
      //elabora_RF(recset, log);
 | 
			
		||||
      break;
 | 
			
		||||
    case 3: //tipo record: SI (incasso documenti)
 | 
			
		||||
      //elabora_SI(recset, log);
 | 
			
		||||
      break;
 | 
			
		||||
    case 4: //tipo record: BR (movimenti magazzino)
 | 
			
		||||
      elabora_BR(recset, log);
 | 
			
		||||
      break;
 | 
			
		||||
    case 5: //tipo record: VC (Variazioni Cliente)
 | 
			
		||||
      //elabora_VC(recset, log);
 | 
			
		||||
      break;
 | 
			
		||||
    default:  //se il tipo record non esiste nella lista dei tipi record si incazza e lo scrive!
 | 
			
		||||
      {
 | 
			
		||||
@ -105,7 +138,7 @@ void TUpload2Campo::elabora(const TMask& mask)
 | 
			
		||||
        log.log_error(msg);
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
    } //switch(pos)..
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										91
									
								
								ha/halib.cpp
									
									
									
									
									
								
							
							
						
						
									
										91
									
								
								ha/halib.cpp
									
									
									
									
									
								
							@ -94,6 +94,9 @@ THardy_recordset::THardy_recordset(const int rec_lenght) : TAS400_recordset("AS4
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/////////////////////////////////////////////////////////////
 | 
			
		||||
//	Recordset specifici per i dati da trasferire INPUT
 | 
			
		||||
/////////////////////////////////////////////////////////////
 | 
			
		||||
//questo invece è il metodo magico che vale per il caricamento da file esterno
 | 
			
		||||
THardy_upload_recordset::THardy_upload_recordset(const TFilename& filename)
 | 
			
		||||
  : THardy_recordset(256)
 | 
			
		||||
@ -180,6 +183,52 @@ THardy_upload_recordset::THardy_upload_recordset(const TFilename& filename)
 | 
			
		||||
  add_trc_field("RF", "CodcliGiro3",      T_X,    98, 6);
 | 
			
		||||
  add_trc_field("RF", "CodiceLotto",      T_X,    104,10);  //noi lo leghiamo all'articolo
 | 
			
		||||
 | 
			
		||||
  //Tipo record SI
 | 
			
		||||
  //--------------
 | 
			
		||||
  add_trc_field("SI", "TipoRecord",       T_X,    1,  2);   //x
 | 
			
		||||
  add_trc_field("SI", "CodiceTerminale",  T_N,    3,  3);   //x
 | 
			
		||||
  add_trc_field("SI", "CodiceCliente",    T_X,    6,  6);
 | 
			
		||||
  add_trc_field("SI", "NumeroFattura",    T_X,    12, 12);
 | 
			
		||||
  add_trc_field("SI", "DataFattura",      T_X,    24, 6);
 | 
			
		||||
  add_trc_field("SI", "NonUsato",         T_N,    30, 9);
 | 
			
		||||
  add_trc_field("SI", "ImportoIncassato", T_Nv2N, 39, 9);
 | 
			
		||||
  add_trc_field("SI", "DataIncasso",      T_X,    48, 6);
 | 
			
		||||
  add_trc_field("SI", "Partita",          T_X,    54, 15);
 | 
			
		||||
  add_trc_field("SI", "TipoDocumento",    T_X,    69, 1);
 | 
			
		||||
  add_trc_field("SI", "DataEmissione",    T_X,    70, 6);
 | 
			
		||||
  add_trc_field("SI", "PagamentoCarta",   T_X,    76, 1);
 | 
			
		||||
 | 
			
		||||
  //Tipo record BR
 | 
			
		||||
  //--------------
 | 
			
		||||
  add_trc_field("BR", "TipoRecord",       T_X,    1,  2);   //x
 | 
			
		||||
  add_trc_field("BR", "CodiceTerminale",  T_N,    3,  3);   //x
 | 
			
		||||
  add_trc_field("BR", "NumeroRiga",       T_N,    6,  3);
 | 
			
		||||
  add_trc_field("BR", "NumeroDoc",        T_N,    9,  5);
 | 
			
		||||
  add_trc_field("BR", "DataMov",          T_X,    14, 6);
 | 
			
		||||
  add_trc_field("BR", "CodiceArticolo",   T_X,    20, 5);
 | 
			
		||||
  add_trc_field("BR", "Qta[int]",         T_N,    25, 5);
 | 
			
		||||
  add_trc_field("BR", "Qta[dec]",         T_N,    30, 2);
 | 
			
		||||
  add_trc_field("BR", "Mittente",         T_N,    32, 3);
 | 
			
		||||
  add_trc_field("BR", "Destinatario",     T_N,    35, 3);
 | 
			
		||||
  add_trc_field("BR", "CausaleMov",       T_N,    38, 2);
 | 
			
		||||
  add_trc_field("BR", "CodiceLotto",      T_X,    40, 10);
 | 
			
		||||
 | 
			
		||||
  //Tipo record VC
 | 
			
		||||
  //--------------
 | 
			
		||||
  add_trc_field("VC", "TipoRecord",       T_X,    1,  2);   //x
 | 
			
		||||
  add_trc_field("VC", "CodiceTerminale",  T_N,    3,  3);   //x
 | 
			
		||||
  add_trc_field("VC", CLI_CODCF,          T_X,    6,  6);   //x
 | 
			
		||||
  add_trc_field("VC", CLI_RAGSOC,         T_X,    12, 34);  //x
 | 
			
		||||
  add_trc_field("VC", CLI_INDCF,          T_X,    46, 34);  //x
 | 
			
		||||
  add_trc_field("VC", "Localita",         T_X,    80, 20);  //x attenzione che potrebbe essere il com_dencom
 | 
			
		||||
  add_trc_field("VC", CLI_CAPCF,          T_X,    100, 5);  //x
 | 
			
		||||
  add_trc_field("VC", "Provincia",        T_X,    105, 2);  //x da questo e da dencom ricaviamo il codcom
 | 
			
		||||
  add_trc_field("VC", CLI_PAIV,           T_X,    107, 16); //x
 | 
			
		||||
  add_trc_field("VC", CLI_CODPAG,         T_X,    123, 1);  //x
 | 
			
		||||
  add_trc_field("VC", "CodiceListino",    T_X,    124, 3);
 | 
			
		||||
  add_trc_field("VC", "TipoDocumento",    T_X,    127, 1);
 | 
			
		||||
  add_trc_field("VC", CLI_COFI,           T_X,    128, 16); //x
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  load_file(filename);
 | 
			
		||||
}
 | 
			
		||||
@ -249,6 +298,30 @@ TEsporta_clientiVAR_recordset::TEsporta_clientiVAR_recordset()
 | 
			
		||||
  insert_field("Segno", T_X, 4, 1);                   //x
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//Sospesi
 | 
			
		||||
//-------
 | 
			
		||||
TEsporta_sospesi_recordset::TEsporta_sospesi_recordset(int rec_length)
 | 
			
		||||
: THardy_recordset(rec_length)
 | 
			
		||||
{
 | 
			
		||||
  add_field("CodiceTerminale",    T_N,    1,   3);    //x
 | 
			
		||||
  add_field("CodiceCliente",      T_X,    4,   6);    //x
 | 
			
		||||
  add_field("NumeroFattura",      T_X,    10,  12);   //x
 | 
			
		||||
  add_field("DataFattura",        T_X,    22,  6);    //x
 | 
			
		||||
  add_field("ImportoResiduo",     T_Nv2N, 28,  9);    //x
 | 
			
		||||
  add_field("ImpOriginalDoc",     T_N,    37,  9);    //x
 | 
			
		||||
  add_field("DataScadenza",       T_X,    46,  6);    //x
 | 
			
		||||
  add_field("Partita",            T_X,    52,  15);   //x
 | 
			
		||||
  add_field("TipoDocumento",      T_X,    67,  1);    //x
 | 
			
		||||
}
 | 
			
		||||
//..e variazioni sospesi
 | 
			
		||||
TEsporta_sospesiVAR_recordset::TEsporta_sospesiVAR_recordset()
 | 
			
		||||
: TEsporta_sospesi_recordset(68)
 | 
			
		||||
{
 | 
			
		||||
  insert_field("Segno", T_X, 4, 1);                   //x
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//Righe Listini
 | 
			
		||||
//-------------
 | 
			
		||||
TEsporta_listini_recordset::TEsporta_listini_recordset(int rec_length)
 | 
			
		||||
@ -408,12 +481,6 @@ TEsporta_pagamenti_recordset::TEsporta_pagamenti_recordset(int rec_length)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/////////////////////////////////////////////////////////////
 | 
			
		||||
//	Recordset specifici per i dati da trasferire INPUT
 | 
			
		||||
/////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/////////////////////////////////////////////////////////////
 | 
			
		||||
//	Metodi di utility
 | 
			
		||||
/////////////////////////////////////////////////////////////
 | 
			
		||||
@ -441,13 +508,23 @@ const TString& find_codag(const long codcf)
 | 
			
		||||
  return codag.right(3);   //il loro codagente è lungo 3!!!
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//il dio dei programmatori ci perdoni!
 | 
			
		||||
const TString& format_data_8(const TDate& data)
 | 
			
		||||
{
 | 
			
		||||
  const int day = data.day();
 | 
			
		||||
  const int month = data.month();
 | 
			
		||||
  const int year = data.year();
 | 
			
		||||
  TString& str_data = get_tmp_string();
 | 
			
		||||
  str_data << day << month << year;
 | 
			
		||||
  str_data.format("%02d%02d%04d", day, month, year);
 | 
			
		||||
  return str_data;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const TString& format_data_6(const TDate& data)
 | 
			
		||||
{
 | 
			
		||||
  const int day = data.day();
 | 
			
		||||
  const int month = data.month();
 | 
			
		||||
  const int year = data.year();
 | 
			
		||||
  TString& str_data = get_tmp_string();
 | 
			
		||||
  str_data.format("%02d%02d%02d", day, month, year%100);
 | 
			
		||||
  return str_data;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										20
									
								
								ha/halib.h
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								ha/halib.h
									
									
									
									
									
								
							@ -99,6 +99,21 @@ public:
 | 
			
		||||
	TEsporta_clientiVAR_recordset();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//Sospesi ()
 | 
			
		||||
//-----------------------
 | 
			
		||||
class TEsporta_sospesi_recordset : public THardy_recordset
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
	TEsporta_sospesi_recordset(int rec_length = 67);
 | 
			
		||||
};
 | 
			
		||||
//..e variazioni sospesi!
 | 
			
		||||
class TEsporta_sospesiVAR_recordset : public TEsporta_sospesi_recordset
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
	TEsporta_sospesiVAR_recordset();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
//Listini (condv + rcondv)
 | 
			
		||||
//------------------------
 | 
			
		||||
class TEsporta_listini_recordset : public THardy_recordset
 | 
			
		||||
@ -153,8 +168,8 @@ public:
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//Rmovmag (Carico)
 | 
			
		||||
//----------------
 | 
			
		||||
//Carico (rdoc di carico)
 | 
			
		||||
//-----------------------
 | 
			
		||||
class TEsporta_carico_recordset : public THardy_recordset
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
@ -215,3 +230,4 @@ public:
 | 
			
		||||
real find_sconto(const TString& str_sconto);
 | 
			
		||||
const TString& find_codag(const long codcf);
 | 
			
		||||
const TString& format_data_8(const TDate& data);
 | 
			
		||||
const TString& format_data_6(const TDate& data);
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user