ahr-csv-to-txt/frmCSVToTXT.cs
2024-10-23 14:42:11 +02:00

1240 lines
47 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;
namespace CSVToTXT
{
public partial class frmCSVToTXT : Form
{
//valori costanti dell'xml
//path destinazione è il perscorso dove verranno salvati i file xml generati.
//viene letto nel file XmlConfigFile.xml dentro alla cartella bin del progetto
public static string pathDestinazione = string.Empty;
public frmCSVToTXT()
{
InitializeComponent();
ReadXML();
}
#region METODI
public void ReadXML()
{
try
{
//cicla gli elementi del file .xml passato al Load, guardando i nodi (Items) e relativi sottnodi del nodo padre (item)
//foreach (var item in XElement.Load(@"XMLFile1.xml").Descendants("Items").Elements("Item"))
foreach (var item in XElement.Load(@"XmlConfigFile.xml").Descendants("Items").Elements("Item"))
{
//se l'elemento non ha attributi
if (!item.Attributes().Any())
{
continue;
}
var nome = item.Attribute("name").Value;
var valore = item.Attribute("value").Value;
switch (nome)
{
case "diOutput":
pathDestinazione = valore;
//txtArea.Text = $"{pathDestinazione}";
break;
default:
txtArea.Text = $"nome: {nome} valore: {valore}";
break;
}
}
}
catch (Exception ex)
{
txtArea.Text = ex.Message;
}
}
private void CercaNeiFile()
{
//creo oggetto openFileDialog1
OpenFileDialog openFileDialog1 = new OpenFileDialog();
//apro finestra per selezionare il file
DialogResult res = openFileDialog1.ShowDialog();
if (res == DialogResult.OK)
{
string nomeFileTrovato = openFileDialog1.FileName;
txtFile.Text = nomeFileTrovato;
txtArea.Text = $"Premere Genera TXT per iniziare la procedura di conversione."
+ Environment.NewLine;
}
}
private void ControllaDareAvere(List<CSVFileObject> list)
{
decimal TotDare = 0;
decimal TotAvere = 0;
foreach (var item in list)
{
TotDare += item.DoubleImportoDare;
TotAvere += item.DoubleImportoAvere;
}
var differenza = TotDare - TotAvere;
if (differenza != 0)
{
MessageBox.Show($"LA differenza tra gli importi in DARE e gli importi in AVERE deve essere ZERO.",
"Erore differenza importi dare/avere",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private List<CSVFileObject> CreaOggettiPerConversioni()
{
List<CSVFileObject> listPartenza = new List<CSVFileObject>();
List<CSVFileObject> listaOrdinata = new List<CSVFileObject>();
//var listaRighe = File.ReadAllLines(txtFile.Text).Where(x => !string.IsNullOrEmpty(x)).Skip(1).ToList();
//leggo le righe del file CSV(ReadLines())
//filtro per le righe che non sono nulle (where).
//skippo la prima che ha i titoli delle colonne (skip(1)).
//per ogni riga creo un oggetto
listPartenza = File.ReadLines(txtFile.Text).Where(x => !string.IsNullOrEmpty(x)).Skip(1).Select(x => CSVFileObject.FromCsvGigante(x)).ToList();
ControllaDareAvere(listPartenza);
//28/03/2022 commentato perchè si deve usare codifica della ripartizione 3 come elementi di rottura.
//listaOrdinata = listPartenza.OrderBy(x => x.IntCodiceDatoRipartizione4).ToList();
listaOrdinata = listPartenza.OrderBy(x => x.intCodificaDellaRipartizione3).ToList();
return listaOrdinata;
}
private void CostruisciFileTXT(List<CSVFileObject> list)
{
ControllaDareAvere(list);
var lastCodice = 99999;
StringBuilder sb = new StringBuilder();
var testataDoc = InsertTestataDocumento();
var boolean = 0;
var BKTXTCount = 0;
sb.Append(testataDoc);
if (list != null && list.Any())
{
foreach (var item in list)
{
//controllo che la lunghezza del codiceConto non sia meno di 9
if (item.CodiceConto.Length >= 9)
{
//quando ci saranno i centri di costo definiti (cioè che saranno tutti valorizzati e diversi da 0 allora il ramo dx dell'AND si potrà togliere)
if (item.IntCodiceDatoRipartizione4 != lastCodice)
{
BKTXTCount++;
//assegno a last codice l'elemento di rottura trovato così diventa quello attuale
lastCodice = item.IntCodiceDatoRipartizione4/*item.CodiceDatoRipartizione4*/;
//ho trovato elemento di rottura, quindi devo inserire una nuova testata di riga
var testataRighe = InsertTestataRiga(item, BKTXTCount);
sb.Append(testataRighe);
//lastCodice = item.IntCodiceDatoRipartizione4/*item.CodiceDatoRipartizione4*/;
}
}
else
{
var str = MessageBox.Show($"il Codice Conto: {item.CodiceConto} deve essere lungo nove.",
"Errore Codice Conto",
MessageBoxButtons.OK, MessageBoxIcon.Error);
boolean = 1;
break;
}
//aggiungo riga con importo quindi richiamo metodo 2
var righeDoc = InsertRigheDocumento(item);
sb.Append(righeDoc);
}
}
if (boolean == 0)
{
var nomefile = $@"KSIP001_{txtCodAzi.Text}.txt";
var path = $@"{pathDestinazione}\{nomefile}";
File.WriteAllText(path, sb.ToString());
if (File.Exists(path))
{
txtArea.Text += Environment.NewLine +
//"File KSIP001_UMB.txt creato correttamente.";
$@"File {nomefile} creato correttamente.";
}
else
{
txtArea.Text += Environment.NewLine +
//"File KSIP001_UMB.txt non creato.";
$@"File {nomefile} non creato.";
}
}
else
{
txtArea.Text += Environment.NewLine + Environment.NewLine +
"ERRORE: non è stato possibile creare il file."
+ Environment.NewLine;
}
}
private string InsertTestataDocumento()
{
StringBuilder sb = new StringBuilder();
var STYPE = "0";
sb.Append(STYPE.PadRight(1));
var GROUP = "CONTAB_HRS_C"; //prenderà un valore
sb.Append(GROUP.PadRight(12));
var MANDT = "100"; //prenderà un valore
sb.Append(MANDT.PadRight(3));
var USNAM = "."; //prenderà un valore
sb.Append(USNAM.PadRight(12));
//var START = DateTime.Now.ToString("ddMMyyyy"); //prenderà un valore
var START = ""; //prenderà un valore
sb.Append(START.PadRight(8));
var XKEEP = ""; //prenderà un valore
sb.Append(XKEEP.PadRight(1));
var NODATA = "/"; //prenderà un valore
sb.Append(NODATA.PadRight(1));
sb.Append(Environment.NewLine);
//sb.Append(Environment.NewLine);
return sb.ToString();
}
private string InsertTestataRiga(CSVFileObject item, int BKTXTCount)
{
StringBuilder sb = new StringBuilder();
var STYPE = "1";
sb.Append(STYPE.PadRight(1));
var TCODE = "FB01";
sb.Append(TCODE.PadRight(20));
var BLDAT = $"27{item.DalMese.Replace("/", "")}"; //prenderà un valore DA CAPIRE QUALE CAMPO è
//var BLDAT = DateTime.Now.ToString("ddMMyyyy");
sb.Append(BLDAT.PadRight(8));
var BLART = "PE"; //prenderà PE o PD - PE -> stipendi PD -> personale pareggio debiti (da capire quali sono gli uni e gli altri)
sb.Append(BLART.PadRight(2));
var BUKRS = txtCodAzi.Text;/*GORI*/ /*"UMBR"*///prenderà un valore DA CAPIRE COME VALORIZZARE (PREDE IL CODICE SOCIETA' SAP, DA CAPIRE SE TXTCODAZI VA BENE)
sb.Append(BUKRS.PadRight(4));
var BUDAT = $"27{item.AlMese.Replace("/", "")}"; //prenderà un valore DA CAPIRE QUALE CAMPO è
sb.Append(BUDAT.PadRight(8));
var MONAT = "/";
sb.Append(MONAT.PadRight(2));
var WAERS = "EUR";
sb.Append(WAERS.PadRight(5));
var KURSF = "/";
sb.Append(KURSF.PadRight(10));
var BELNR = "/";
sb.Append(BELNR.PadRight(10));
var WWERT = "/";
sb.Append(WWERT.PadRight(8));
var XBLNR = "/";
sb.Append(XBLNR.PadRight(16));
var BVORG = "/";
sb.Append(BVORG.PadRight(16));
var BKTXT = "HRS_C"
//+ $"{item.DalMese.Substring(3, 2)}" + $"{item.DalMese.Substring(item.DalMese.Length - 2)}"
+ $"{item.DalMese.Substring(5, 2) + item.DalMese.Substring(0, 2)}"
+ $"{BUKRS}"
+ $"{BKTXTCount}"; //progressivo.
sb.Append(BKTXT.PadRight(25));
var PARGB = "/";
sb.Append(PARGB.PadRight(4));
var AUGLV = "/";
sb.Append(AUGLV.PadRight(8));
var VBUND = "/"; //prenderà un valore
sb.Append(VBUND.PadRight(6));
var XMWST = "/";
sb.Append(XMWST.PadRight(1));
var DOCID = "/";
sb.Append(DOCID.PadRight(10));
var BARCD = "/";
sb.Append(BARCD.PadRight(40));
var STODT = "/";
sb.Append(STODT.PadRight(8));
var BRNCH = "/";
sb.Append(BRNCH.PadRight(4));
var NUMPG = "/";
sb.Append(NUMPG.PadRight(3));
var STGRD = "/";
sb.Append(STGRD.PadRight(2));
var KURSF_M = "/";
sb.Append(KURSF_M.PadRight(10));
var AUGTX = "/";
sb.Append(AUGTX.PadRight(50));
var XPRFG = "/";
sb.Append(XPRFG.PadRight(1));
var XBWAE = "/";
sb.Append(XBWAE.PadRight(1));
var LDGRP = "/";
sb.Append(LDGRP.PadRight(4));
var PROPMANO = "/";
sb.Append(PROPMANO.PadRight(13));
var VATDATE = "/";
sb.Append(VATDATE.PadRight(8));
var SENDE = "/";
sb.Append(SENDE.PadRight(1));
sb.Append(Environment.NewLine);
//sb.Append(Environment.NewLine);
return sb.ToString();
}
private string InsertRigheDocumento(CSVFileObject item)
{
StringBuilder sb = new StringBuilder();
var STYPE = "2";
sb.Append(STYPE.PadRight(1));
var TBNAM = "BBSEG";
sb.Append(TBNAM.PadRight(30));
if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0)
{
var NEWBS = "40"; //prenderà importo dare
sb.Append(NEWBS.PadRight(2));
}
else
{
var NEWBS = "50"; //prenderà importo avere
sb.Append(NEWBS.PadRight(2));
}
var DUMMY = "/";
sb.Append(DUMMY.PadRight(10));
var NEWUM = "/";
sb.Append(NEWUM.PadRight(1));
var NEWBK = "/";
sb.Append(NEWBK.PadRight(4));
if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0)
{
var WRBTR = $"{string.Format("{0:0.00}", item.DoubleImportoDare)}"; //prenderà un valore
sb.Append((WRBTR.PadLeft(16)).Replace(" ", "0"));
}
else
{
var WRBTR = $"{string.Format("{0:0.00}", item.DoubleImportoAvere)}"; //prenderà un valore
sb.Append((WRBTR.PadLeft(16)).Replace(" ", "0"));
}
var DMBTR = "/";
sb.Append(DMBTR.PadRight(16));
var WMWST = "/";
sb.Append(WMWST.PadRight(16));
var MWSTS = "/";
sb.Append(MWSTS.PadRight(16));
var MWSKZ = "/";
sb.Append(MWSKZ.PadRight(2));
var XSKRL = "/";
sb.Append(XSKRL.PadRight(1));
var FWZUZ = "/";
sb.Append(FWZUZ.PadRight(16));
var HWZUZ = "/";
sb.Append(HWZUZ.PadRight(16));
var GSBER = "/";
sb.Append(GSBER.PadRight(4));
if (item.CodiceConto.Replace("\"","").StartsWith("C"))// se il conto è di costo allora KOSTL sarà valorizzato con CENTRO DI COSTO
{
var KOSTL = item.CodiceDatoRipartizione2.Replace("\"", "");
sb.Append(KOSTL.PadRight(10));
}
else
{
var KOSTL = "/";
sb.Append(KOSTL.PadRight(10));
}
//if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0)
//{
// if (item.CodiceConto.StartsWith("C"))// se il conto è di costo allora KOSTL sarà valorizzato con CENTRO DI COSTO
// {
// var KOSTL = item.CodiceDatoRipartizione2;
// sb.Append(KOSTL.PadRight(10));
// }
// else
// {
// var KOSTL = "/";
// sb.Append(KOSTL.PadRight(10));
// }
//}
//else if (Convert.ToDecimal(item.ImportoAvere.Replace(",", ".")) > 0)
//{
// if (item.CodiceContropartita.StartsWith("C"))// se il conto è di costo allora KOSTL sarà valorizzato con CENTRO DI COSTO
// {
// var KOSTL = item.CodiceDatoRipartizione2;
// sb.Append(KOSTL.PadRight(10));
// }
// else
// {
// var KOSTL = "/";
// sb.Append(KOSTL.PadRight(10));
// }
//}
var DUMMY4 = "/";
sb.Append(DUMMY4.PadRight(4));
var AUFNR = "/";
sb.Append(AUFNR.PadRight(12));
var EBELN = "/";
sb.Append(EBELN.PadRight(10));
var EBELP = "/";
sb.Append(EBELP.PadRight(5));
var PROJN = "/";
sb.Append(PROJN.PadRight(16));
var MATNR = "/";
sb.Append(MATNR.PadRight(18));
var WERKS = "/";
sb.Append(WERKS.PadRight(4));
var MENGE = "/";
sb.Append(MENGE.PadRight(17));
var MEINS = "/";
sb.Append(MEINS.PadRight(3));
var VBEL2 = "/";
sb.Append(VBEL2.PadRight(10));
var POSN2 = "/";
sb.Append(POSN2.PadRight(6));
var ETEN2 = "/";
sb.Append(ETEN2.PadRight(4));
var PERNR = "/";
sb.Append(PERNR.PadRight(8));
var BEWAR = "/";
sb.Append(BEWAR.PadRight(3));
var VALUT = "/";
sb.Append(VALUT.PadRight(8));
var ZFBDT = "/";
sb.Append(ZFBDT.PadRight(8));
var ZINKZ = "/";
sb.Append(ZINKZ.PadRight(2));
var ZUONR = "/";
sb.Append(ZUONR.PadRight(18));
var FKONT = "/";
sb.Append(FKONT.PadRight(3));
var XAABG = "/";
sb.Append(XAABG.PadRight(1));
var SGTXT = "/";
sb.Append(SGTXT.PadRight(50));
var BLNKZ = "/";
sb.Append(BLNKZ.PadRight(2));
var BLNBT = "/";
sb.Append(BLNBT.PadRight(16));
var BLNPZ = "/";
sb.Append(BLNPZ.PadRight(8));
var MABER = "/";
sb.Append(MABER.PadRight(2));
var SKFBT = "/";
sb.Append(SKFBT.PadRight(16));
var WSKTO = "/";
sb.Append(WSKTO.PadRight(16));
var ZTERM = "/";
sb.Append(ZTERM.PadRight(4));
var ZBD1T = "/";
sb.Append(ZBD1T.PadRight(3));
var ZBD1P = "/";
sb.Append(ZBD1P.PadRight(6));
var ZBD2T = "/";
sb.Append(ZBD2T.PadRight(3));
var ZBD2P = "/";
sb.Append(ZBD2P.PadRight(6));
var ZBD3T = "/";
sb.Append(ZBD3T.PadRight(3));
var ZLSPR = "/";
sb.Append(ZLSPR.PadRight(1));
var REBZG = "/";
sb.Append(REBZG.PadRight(10));
var REBZJ = "/";
sb.Append(REBZJ.PadRight(4));
var REBZZ = "/";
sb.Append(REBZZ.PadRight(3));
var ZLSCH = "/";
sb.Append(ZLSCH.PadRight(1));
var SAMNR = "/";
sb.Append(SAMNR.PadRight(8));
var ZBFIX = "/";
sb.Append(ZBFIX.PadRight(1));
var QSSKZ = "/";
sb.Append(QSSKZ.PadRight(2));
var QSSHB = "/";
sb.Append(QSSHB.PadRight(16));
var QSFBT = "/";
sb.Append(QSFBT.PadRight(16));
var ESRNR = "/";
sb.Append(ESRNR.PadRight(11));
var ESRPZ = "/";
sb.Append(ESRPZ.PadRight(2));
var ESRRE = "/";
sb.Append(ESRRE.PadRight(27));
var FDTAG = "/";
sb.Append(FDTAG.PadRight(8));
var FDLEV = "/";
sb.Append(FDLEV.PadRight(2));
var ANLN1 = "/";
sb.Append(ANLN1.PadRight(12));
var ANLN2 = "/";
sb.Append(ANLN2.PadRight(4));
var BZDAT = "/";
sb.Append(BZDAT.PadRight(8));
var ANBWA = "/";
sb.Append(ANBWA.PadRight(3));
var ABPER = "/";
sb.Append(ABPER.PadRight(7));
//pagina 23
var GBETR = "/";
sb.Append(GBETR.PadRight(16));
var KURSR = "/";
sb.Append(KURSR.PadRight(10));
var MANSP = "/";
sb.Append(MANSP.PadRight(1));
var MSCHL = "/";
sb.Append(MSCHL.PadRight(1));
var HBKID = "/";
sb.Append(HBKID.PadRight(5));
var BVTYP = "/";
sb.Append(BVTYP.PadRight(4));
var ANFBN = "/";
sb.Append(ANFBN.PadRight(10));
var ANFBU = "/";
sb.Append(ANFBU.PadRight(4));
var ANFBJ = "/";
sb.Append(ANFBJ.PadRight(4));
var LZBKZ = "/";
sb.Append(LZBKZ.PadRight(3));
var LANDL = "/";
sb.Append(LANDL.PadRight(3));
var DIEKZ = "/";
sb.Append(DIEKZ.PadRight(1));
var ZOLLD = "/";
sb.Append(ZOLLD.PadRight(8));
var ZOLLT = "/";
sb.Append(ZOLLT.PadRight(8));
var VRSDT = "/";
sb.Append(VRSDT.PadRight(8));
var VRSKZ = "/";
sb.Append(VRSKZ.PadRight(1));
var HZUON = "/";
sb.Append(HZUON.PadRight(18));
var REGUL = "/";
sb.Append(REGUL.PadRight(1));
var NAME1 = "/";
sb.Append(NAME1.PadRight(35));
var NAME2 = "/";
sb.Append(NAME2.PadRight(35));
var NAME3 = "/";
sb.Append(NAME3.PadRight(35));
var NAME4 = "/";
sb.Append(NAME4.PadRight(35));
var STRAS = "/";
sb.Append(STRAS.PadRight(35));
var ORT01 = "/";
sb.Append(ORT01.PadRight(35));
var PSTLZ = "/";
sb.Append(PSTLZ.PadRight(10));
var LAND1 = "/";
sb.Append(LAND1.PadRight(3));
var REGIO = "/";
sb.Append(REGIO.PadRight(3));
var BANKL = "/";
sb.Append(BANKL.PadRight(15));
var BANKS = "/";
sb.Append(BANKS.PadRight(3));
var BANKN = "/";
sb.Append(BANKN.PadRight(18));
var BKONT = "/";
sb.Append(BKONT.PadRight(2));
var STCD1 = "/";
sb.Append(STCD1.PadRight(16));
var STCD2 = "/";
sb.Append(STCD2.PadRight(11));
var MADAT = "/";
sb.Append(MADAT.PadRight(8));
var MANST = "/";
sb.Append(MANST.PadRight(1));
var EGMLD = "/";
sb.Append(EGMLD.PadRight(3));
var DUMMY2 = "/";
sb.Append(DUMMY2.PadRight(3));
var STCEG = "/";
sb.Append(STCEG.PadRight(20));
var STKZA = "/";
sb.Append(STKZA.PadRight(1));
var STKZU = "/";
sb.Append(STKZU.PadRight(1));
var PFACH = "/";
sb.Append(PFACH.PadRight(10));
var PSTL2 = "/";
sb.Append(PSTL2.PadRight(10));
var SPRAS = "/";
sb.Append(SPRAS.PadRight(1));
var XINVE = "/";
sb.Append(XINVE.PadRight(1));
//if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0)
//{
var NEWKO = item.CodiceConto.Replace("\"", ""); //se importo in dare valorizzato
sb.Append(NEWKO.PadRight(17));
//}
//else if (Convert.ToDecimal(item.ImportoAvere.Replace(",", ".")) > 0)
//{
// var NEWKO = item.CodiceContropartita.Replace("\"", ""); //se importo in avere valorizzato
// sb.Append(NEWKO.PadRight(17));
//}
var NEWBW = "/";
sb.Append(NEWBW.PadRight(3));
var KNRZE = "/";
sb.Append(KNRZE.PadRight(17));
var HKONT = "/";
sb.Append(HKONT.PadRight(10));
if (item.CodiceConto.Replace("\"","").StartsWith("C"))
{
var PRCTR = item.CodiceDatoRipartizione2.Replace("\"", "");
sb.Append(PRCTR.PadRight(10));
}
else
{
var PRCTR = "/";
sb.Append(PRCTR.PadRight(10));
}
var VERTN = "/";
sb.Append(VERTN.PadRight(13));
var VERTT = "/";
sb.Append(VERTT.PadRight(1));
var VBEWA = "/";
sb.Append(VBEWA.PadRight(4));
var HWBAS = "/";
sb.Append(HWBAS.PadRight(16));
var FWBAS = "/";
sb.Append(FWBAS.PadRight(16));
var FIPOS = "/";
sb.Append(FIPOS.PadRight(14));
var VNAME = "/";
sb.Append(VNAME.PadRight(6));
var EGRUP = "/";
sb.Append(EGRUP.PadRight(3));
var BTYPE = "/";
sb.Append(BTYPE.PadRight(2));
var PAOBJNR = "/";
sb.Append(PAOBJNR.PadRight(10));
var KSTRG = "/";
sb.Append(KSTRG.PadRight(12));
var IMKEY = "/";
sb.Append(IMKEY.PadRight(8));
var DUMMY3 = "/";
sb.Append(DUMMY3.PadRight(8));
var VPTNR = "/";
sb.Append(VPTNR.PadRight(10));
var NPLNR = "/";
sb.Append(NPLNR.PadRight(12));
var VORNR = "/";
sb.Append(VORNR.PadRight(4));
var XEGDR = "/";
sb.Append(XEGDR.PadRight(1));
var RECID = "/";
sb.Append(RECID.PadRight(2));
var PPRCT = "/";
sb.Append(PPRCT.PadRight(10));
//if (true)
//{
//}
//else
//{
var PROJK = "/";//prenderà un valore
sb.Append(PROJK.PadRight(24));
//}
var UZAWE = "/";
sb.Append(UZAWE.PadRight(2));
var TXJCD = "/";
sb.Append(TXJCD.PadRight(15));
var FISTL = "/";
sb.Append(FISTL.PadRight(16));
var GEBER = "/";
sb.Append(GEBER.PadRight(10));
var DMBE2 = "/";
sb.Append(DMBE2.PadRight(16));
var DMBE3 = "/";
sb.Append(DMBE3.PadRight(16));
var PARGB = "/";
sb.Append(PARGB.PadRight(4));
var XREF1 = "/";
sb.Append(XREF1.PadRight(12));
var XREF2 = "/";
sb.Append(XREF2.PadRight(12));
var KBLNR = "/";
sb.Append(KBLNR.PadRight(10));
var KBLPOS = "/";
sb.Append(KBLPOS.PadRight(3));
var WDATE = "/";
sb.Append(WDATE.PadRight(8));
var WGBKZ = "/";
sb.Append(WGBKZ.PadRight(1));
var XAKTZ = "/";
sb.Append(XAKTZ.PadRight(1));
var WNAME = "/";
sb.Append(WNAME.PadRight(30));
var WORT1 = "/";
sb.Append(WORT1.PadRight(30));
var WBZOG = "/";
sb.Append(WBZOG.PadRight(30));
var WORT2 = "/";
sb.Append(WORT2.PadRight(30));
var WBANK = "/";
sb.Append(WBANK.PadRight(60));
var WLZBP = "/";
sb.Append(WLZBP.PadRight(60));
var DISKP = "/";
sb.Append(DISKP.PadRight(8));
var DISKT = "/";
sb.Append(DISKT.PadRight(3));
var WINFW = "/";
sb.Append(WINFW.PadRight(16));
var WINHW = "/";
sb.Append(WINHW.PadRight(16));
var WEVWV = "/";
sb.Append(WEVWV.PadRight(1));
var WSTAT = "/";
sb.Append(WSTAT.PadRight(1));
var WMWKZ = "/";
sb.Append(WMWKZ.PadRight(2));
var WSTKZ = "/";
sb.Append(WSTKZ.PadRight(1));
var RKE_ARTNR = "/";
sb.Append(RKE_ARTNR.PadRight(18));
var RKE_BONUS = "/";
sb.Append(RKE_BONUS.PadRight(2));
var RKE_BRSCH = "/";
sb.Append(RKE_BRSCH.PadRight(4));
var RKE_BUKRS = "/";
sb.Append(RKE_BUKRS.PadRight(4));
var RKE_BZIRK = "/";
sb.Append(RKE_BZIRK.PadRight(6));
var RKE_EFORM = "/";
sb.Append(RKE_EFORM.PadRight(5));
var RKE_FKART = "/";
sb.Append(RKE_FKART.PadRight(4));
var RKE_GEBIE = "/";
sb.Append(RKE_GEBIE.PadRight(4));
var RKE_GSBER = "/";
sb.Append(RKE_GSBER.PadRight(4));
var RKE_KAUFN = "/";
sb.Append(RKE_KAUFN.PadRight(10));
var RKE_KDGRP = "/";
sb.Append(RKE_KDGRP.PadRight(2));
var RKE_KDPOS = "/";
sb.Append(RKE_KDPOS.PadRight(6));
var RKE_KNDNR = "/";
sb.Append(RKE_KNDNR.PadRight(10));
var RKE_KOKRS = "/";
sb.Append(RKE_KOKRS.PadRight(4));
var RKE_KSTRG = "/";
sb.Append(RKE_KSTRG.PadRight(12));
var RKE_LAND1 = "/";
sb.Append(RKE_LAND1.PadRight(3));
var RKE_MAABC = "/";
sb.Append(RKE_MAABC.PadRight(1));
var RKE_MATKL = "/";
sb.Append(RKE_MATKL.PadRight(9));
var RKE_PRCTR = "/";
sb.Append(RKE_PRCTR.PadRight(10));
var RKE_PSPNR = "/";
sb.Append(RKE_PSPNR.PadRight(24));
var RKE_RKAUFNR = "/";
sb.Append(RKE_RKAUFNR.PadRight(12));
var RKE_SPART = "/";
sb.Append(RKE_SPART.PadRight(2));
var RKE_VKBUR = "/";
sb.Append(RKE_VKBUR.PadRight(4));
var RKE_VKGRP = "/";
sb.Append(RKE_VKGRP.PadRight(3));
var RKE_VKORG = "/";
sb.Append(RKE_VKORG.PadRight(4));
var RKE_VTWEG = "/";
sb.Append(RKE_VTWEG.PadRight(2));
var RKE_WERKS = "/";
sb.Append(RKE_WERKS.PadRight(4));
var RKE_KMBRND = "/";
sb.Append(RKE_KMBRND.PadRight(2));
var RKE_KMCATG = "/";
sb.Append(RKE_KMCATG.PadRight(2));
var RKE_KMHI01 = "/";
sb.Append(RKE_KMHI01.PadRight(10));
var RKE_KMHI02 = "/";
sb.Append(RKE_KMHI02.PadRight(10));
var RKE_KMHI03 = "/";
sb.Append(RKE_KMHI03.PadRight(10));
var RKE_KMKDGR = "/";
sb.Append(RKE_KMKDGR.PadRight(2));
var RKE_KMLAND = "/";
sb.Append(RKE_KMLAND.PadRight(3));
var RKE_KMMAKL = "/";
sb.Append(RKE_KMMAKL.PadRight(9));
var RKE_KMNIEL = "/";
sb.Append(RKE_KMNIEL.PadRight(2));
var RKE_KMSTGE = "/";
sb.Append(RKE_KMSTGE.PadRight(2));
var RKE_KMVKBU = "/";
sb.Append(RKE_KMVKBU.PadRight(4));
var RKE_KMVKGR = "/";
sb.Append(RKE_KMVKGR.PadRight(3));
var RKE_KMVTNR = "/";
sb.Append(RKE_KMVTNR.PadRight(8));
var RKE_PPRCTR = "/";
sb.Append(RKE_PPRCTR.PadRight(10));
var VBUND = "/";
sb.Append(VBUND.PadRight(6));
var FKBER = "/";
sb.Append(FKBER.PadRight(4));
var DABRZ = "/";
sb.Append(DABRZ.PadRight(8));
var XSTBA = "/";
sb.Append(XSTBA.PadRight(1));
var RSTGR = "/";
sb.Append(RSTGR.PadRight(3));
var FIPEX = "/";
sb.Append(FIPEX.PadRight(24));
var XNEGP = "/";
sb.Append(XNEGP.PadRight(1));
var GRICD = "/";
sb.Append(GRICD.PadRight(2));
var GRIRG = "/";
sb.Append(GRIRG.PadRight(3));
var GITYP = "/";
sb.Append(GITYP.PadRight(2));
var FITYP = "/";
sb.Append(FITYP.PadRight(2));
var STCDT = "/";
sb.Append(STCDT.PadRight(2));
var STKZN = "/";
sb.Append(STKZN.PadRight(1));
var STCD3 = "/";
sb.Append(STCD3.PadRight(18));
var STCD4 = "/";
sb.Append(STCD4.PadRight(18));
var XREF3 = "/";
sb.Append(XREF3.PadRight(20));
var KIDNO = "/";
sb.Append(KIDNO.PadRight(30));
var DTWS1 = "/";
sb.Append(DTWS1.PadRight(2));
var DTWS2 = "/";
sb.Append(DTWS2.PadRight(2));
var DTWS3 = "/";
sb.Append(DTWS3.PadRight(2));
var DTWS4 = "/";
sb.Append(DTWS4.PadRight(2));
var DTAWS = "/";
sb.Append(DTAWS.PadRight(2));
var PYCUR = "/";
sb.Append(PYCUR.PadRight(5));
var PYAMT = "/";
sb.Append(PYAMT.PadRight(16));
var BUPLA = "/";
sb.Append(BUPLA.PadRight(4));
var SECCO = "/";
sb.Append(SECCO.PadRight(4));
var LSTAR = "/";
sb.Append(LSTAR.PadRight(6));
var EGDEB = "/";
sb.Append(EGDEB.PadRight(10));
var WENR = "/";
sb.Append(WENR.PadRight(8));
var GENR = "/";
sb.Append(GENR.PadRight(8));
var GRNR = "/";
sb.Append(GRNR.PadRight(8));
var MENR = "/";
sb.Append(MENR.PadRight(8));
var MIVE = "/";
sb.Append(MIVE.PadRight(13));
var NKSL = "/";
sb.Append(NKSL.PadRight(4));
var EMPSL = "/";
sb.Append(EMPSL.PadRight(5));
var SVWNR = "/";
sb.Append(SVWNR.PadRight(13));
var SBERI = "/";
sb.Append(SBERI.PadRight(10));
var KKBER = "/";
sb.Append(KKBER.PadRight(4));
var EMPFB = "/";
sb.Append(EMPFB.PadRight(10));
var KURSR_M = "/";
sb.Append(KURSR_M.PadRight(10));
var J_1KFREPRE = "/";
sb.Append(J_1KFREPRE.PadRight(10));
var J_1KFTBUS = "/";
sb.Append(J_1KFTBUS.PadRight(30));
var J_1KFTIND = "/";
sb.Append(J_1KFTIND.PadRight(30));
var IDXSP = "/";
sb.Append(IDXSP.PadRight(5));
var ANRED = "/";
sb.Append(ANRED.PadRight(15));
var RECNNR = "/";
sb.Append(RECNNR.PadRight(13));
var E_MIVE = "/";
sb.Append(E_MIVE.PadRight(13));
var BKREF = "/";
sb.Append(BKREF.PadRight(20));
var DTAMS = "/";
sb.Append(DTAMS.PadRight(1));
var CESSION_KZ = "/";
sb.Append(CESSION_KZ.PadRight(2));
var GRANT_NBR = "/";
sb.Append(GRANT_NBR.PadRight(20));
var FKBER_LONG = "/";
sb.Append(FKBER_LONG.PadRight(16));
var ERLKZ = "/";
sb.Append(ERLKZ.PadRight(1));
var IBAN = "/";
sb.Append(IBAN.PadRight(34));
var VALID_FROM = "/";
sb.Append(VALID_FROM.PadRight(8));
var SEGMENT = "/";
sb.Append(SEGMENT.PadRight(10));
var PSEGMENT = "/";
sb.Append(PSEGMENT.PadRight(10));
var HKTID = "/";
sb.Append(HKTID.PadRight(5));
var XSIWE = "/";
sb.Append(XSIWE.PadRight(1));
var TCNO = "/";
sb.Append(TCNO.PadRight(16));
var DATEOFSERVICE = "/";
sb.Append(DATEOFSERVICE.PadRight(8));
var NOTAXCORR = "/";
sb.Append(NOTAXCORR.PadRight(1));
var DIFFOPTRATE = "/";
sb.Append(DIFFOPTRATE.PadRight(10));
var HASDIFFOPTRATE = "/";
sb.Append(HASDIFFOPTRATE.PadRight(1));
var AVGACT_G = "/";
sb.Append(AVGACT_G.PadRight(26));
var AVGACT_L = "/";
sb.Append(AVGACT_L.PadRight(26));
var AVGACT_T = "/";
sb.Append(AVGACT_T.PadRight(26));
//var stringa = ""; //da ricontrollare
//sb.Append(AVGACT_T.PadRight(26));
var AVG_ACT_G_CURR = "/";
sb.Append(AVG_ACT_G_CURR.PadRight(5));
var AVG_ACT_L_CURR = "/";
sb.Append(AVG_ACT_L_CURR.PadRight(5));
var AVG_ACT_T_CURR = "/";
sb.Append(AVG_ACT_T_CURR.PadRight(5));
var BOENO = "/";
sb.Append(BOENO.PadRight(10));
var MNDID = "/";
sb.Append(MNDID.PadRight(35));
var SENDE = "/";
sb.Append(SENDE.PadRight(1));
sb.Append(Environment.NewLine);
return sb.ToString();
}
#endregion
#region EVENTI
private void btnConvertiTxt_Click(object sender, EventArgs e)
{
try
{
if (/*txtCodAzi.Text.Length == 4 &&*/ !string.IsNullOrEmpty(txtCodAzi.Text))
{
var list = CreaOggettiPerConversioni();
CostruisciFileTXT(list);
}
//else if (txtCodAzi.Text.Length != 4 && !string.IsNullOrEmpty(txtCodAzi.Text))
//{
// var str = MessageBox.Show($"Il codice azienda deve essere lungo quattro ",
// "CODICE AZIENDA ERRATO",
// MessageBoxButtons.OK, MessageBoxIcon.Error);
// txtCodAzi.BackColor = Color.FromArgb(255, 102, 102);
//}
else
{
var str = MessageBox.Show($"Inserire il codice azienda prima di poter generare il file TXT ",
"CODICE AZIENDA MANCANTE",
MessageBoxButtons.OK, MessageBoxIcon.Error);
txtCodAzi.BackColor = Color.FromArgb(255, 102, 102);
}
}
catch (Exception ex)
{
//txtArea.Text = ex.Message;
var str = MessageBox.Show($"{ex.Message}",
"File CSV non specificato",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void btnCercaFile_Click(object sender, EventArgs e)
{
try
{
CercaNeiFile();
}
catch (Exception ex)
{
txtArea.Text = ex.Message;
}
}
private void txtCodAzi_Leave(object sender, EventArgs e)
{
if (txtCodAzi.BackColor == Color.FromArgb(255, 102, 102))
{
if (!string.IsNullOrEmpty(txtCodAzi.Text))
{
txtCodAzi.BackColor = Color.FromArgb(255, 255, 255);
}
}
}
#endregion
}
#region CLASSI
//classe con i campi del file csv che leggo
public class CSVFileObject
{
public string CodiceAzienda;
public string Denominazione;
public string DalMese;
public string TipoCedolinoDal;
public string AlMese;
public string TipoCedolinoAl;
public string RegimeContabile;
public string ProgressivoRipartizione;
public string DescrizioneProgressivoRipartizione;
public string ContabilitaDestinazione;
public string DescrizioneContabilitaDestinazione;
public string CodiceConto;
public string DescrizioneConto;
public string CodiceDipendente;
public string Cognome;
public string Nome;
public string NumeroRegistrazione;
public string TipoCausale;
public string DescrizioneTipoCausale;
public string Causale;
public string DescrizioneCausale;
public string TipoElemento;
public string DescrizioneTipoElemento;
public string CodiceContropartita;
public string DescrizioneContropartita;
public string ImportoDare;
public string ImportoAvere;
public string CodiceTipoDatoRipartizione1;
public string CodiceDatoRipartizione1;
public string CodificaDellaRipartizione1;
public string CodiceTipoDatoRipartizione2;
public string CodiceDatoRipartizione2;
public string CodificaDellaRipartizione2;
public string CodiceTipoDatoRipartizione3;
public string CodiceDatoRipartizione3;
public string CodificaDellaRipartizione3;
//public int CodificaDellaRipartizione3;
public string CodiceTipoDatoRipartizione4;
public string CodiceDatoRipartizione4;
public string CodificaDellaRipartizione4;
public string CodiceTipoDatoRipartizione5;
public string CodiceDatoRipartizione5;
public string CodificaDellaRipartizione5;
public string CodiceTipoDatoRipartizione6;
public string CodiceDatoRipartizione6;
public string CodificaDellaRipartizione6;
public string CodiceTipoDatoRipartizione7;
public string CodiceDatoRipartizione7;
public string CodificaDellaRipartizione7;
public string CodiceTipoDatoRipartizione8;
public string CodiceDatoRipartizione8;
public string CodificaDellaRipartizione8;
//aggiungo una propery per gestire la colonna CodiceDatoRipartizione4 perchè mi serve averla come intero per poter ordinare la lista.
//nel try - catch che c'è sotto imporrò che se non è valorizzato il campo prenderà 0. questo avverà solo in fase di test perchè il centro di costo
//nel file di input dovrà esserci sempre. questo perchè senò potrebbe sputtanarsi il calcolo del dare/avere che deve essere 0
public int IntCodiceDatoRipartizione4;
public int intCodificaDellaRipartizione3;
//public decimal IntCodiceDatoRipartizione4;
//public decimal intCodificaDellaRipartizione3;
public decimal DoubleImportoDare;
public decimal DoubleImportoAvere;
public DateTime DateDalMese;
public static CSVFileObject FromCsvGigante(string csvLine)
{
CSVFileObject valore = new CSVFileObject();
string[] val = csvLine.Split(';');
valore.CodiceAzienda = Convert.ToString(val[0]);
valore.Denominazione = Convert.ToString(val[1]);
valore.DalMese = Convert.ToString(val[2]);
valore.TipoCedolinoDal = Convert.ToString(val[3]);
valore.AlMese = Convert.ToString(val[4]);
valore.TipoCedolinoAl = Convert.ToString(val[5]);
valore.RegimeContabile = Convert.ToString(val[6]);
valore.ProgressivoRipartizione = Convert.ToString(val[7]);
valore.DescrizioneProgressivoRipartizione = Convert.ToString(val[8]);
valore.ContabilitaDestinazione = Convert.ToString(val[9]);
valore.DescrizioneContabilitaDestinazione = Convert.ToString(val[10]);
valore.CodiceConto = Convert.ToString(val[11]);
valore.DescrizioneConto = Convert.ToString(val[12]);
valore.CodiceDipendente = Convert.ToString(val[13]);
valore.Cognome = Convert.ToString(val[14]);
valore.Nome = Convert.ToString(val[15]);
valore.NumeroRegistrazione = Convert.ToString(val[16]);
valore.TipoCausale = Convert.ToString(val[17]);
valore.DescrizioneTipoCausale = Convert.ToString(val[18]);
valore.Causale = Convert.ToString(val[19]);
valore.DescrizioneCausale = Convert.ToString(val[20]);
valore.TipoElemento = Convert.ToString(val[21]);
valore.DescrizioneTipoElemento = Convert.ToString(val[22]);
valore.CodiceContropartita = Convert.ToString(val[23]);
valore.DescrizioneContropartita = Convert.ToString(val[24]);
valore.ImportoDare = Convert.ToString(val[25]);
valore.ImportoAvere = Convert.ToString(val[26]);
valore.CodiceTipoDatoRipartizione1 = Convert.ToString(val[27]);
valore.CodiceDatoRipartizione1 = Convert.ToString(val[28]);
valore.CodificaDellaRipartizione1 = Convert.ToString(val[29]);
valore.CodiceTipoDatoRipartizione2 = Convert.ToString(val[30]);
valore.CodiceDatoRipartizione2 = Convert.ToString(val[31]);
valore.CodificaDellaRipartizione2 = Convert.ToString(val[32]);
valore.CodiceTipoDatoRipartizione3 = Convert.ToString(val[33]);
valore.CodiceDatoRipartizione3 = Convert.ToString(val[34]);
valore.CodificaDellaRipartizione3 = Convert.ToString(val[35]);
valore.CodiceTipoDatoRipartizione4 = Convert.ToString(val[36]);
valore.CodiceDatoRipartizione4 = Convert.ToString(val[37]);
valore.CodificaDellaRipartizione4 = Convert.ToString(val[38]);
valore.CodiceTipoDatoRipartizione5 = Convert.ToString(val[39]);
valore.CodiceDatoRipartizione5 = Convert.ToString(val[40]);
valore.CodificaDellaRipartizione5 = Convert.ToString(val[41]);
valore.CodiceTipoDatoRipartizione6 = Convert.ToString(val[42]);
valore.CodiceDatoRipartizione6 = Convert.ToString(val[43]);
valore.CodificaDellaRipartizione6 = Convert.ToString(val[44]);
valore.CodiceTipoDatoRipartizione7 = Convert.ToString(val[45]);
valore.CodiceDatoRipartizione7 = Convert.ToString(val[46]);
valore.CodificaDellaRipartizione7 = Convert.ToString(val[47]);
valore.CodiceTipoDatoRipartizione8 = Convert.ToString(val[48]);
valore.CodiceDatoRipartizione8 = Convert.ToString(val[49]);
valore.CodificaDellaRipartizione8 = Convert.ToString(val[50]);
try
{
valore.IntCodiceDatoRipartizione4 = Convert.ToInt32(val[37]);
valore.intCodificaDellaRipartizione3 = Convert.ToInt32(val[35]);
}
catch (Exception)
{
valore.IntCodiceDatoRipartizione4 = 0;
valore.intCodificaDellaRipartizione3 = 0;
}
//convertiti in decimal perchè con il double faceva casino con gli arrotondamenti
//e non funzionava il controllo della differenza dare/avere
valore.DoubleImportoDare = Convert.ToDecimal/*ToDouble*/(val[25]);
valore.DoubleImportoAvere = Convert.ToDecimal/*ToDouble*/(val[26]);
//valori.intCodificaDellaRipartizione3 = Convert.ToDecimal(val[35]);
valore.DateDalMese = Convert.ToDateTime(val[2]);
return valore;
}
}
//classe per il file csv bil_sal_dtc_ott21
public class ValoriCSV
{
public string codiceAzienda;
public string denominazione;
public string dalMese;
public string dalTipoCedolino;
public string alMese;
public string alTipoCedolino;
public string regimeContabile;
public string progressivoRipartizione;
public string descrizioneProgressivoRipartizione;
public string contabilitaDiDestinazione;
public string descrizioneContabilitaDestinazione;
public string modalitaDiStampa;
public string codiceConto;
public string descrizioneConto;
public string importoDare;
public string importoAvere;
public string importoSaldo;
public static ValoriCSV FromCsv(string csvLine)
{
string[] val = csvLine.Split(';');
ValoriCSV valoreCSV = new ValoriCSV();
valoreCSV.codiceAzienda = Convert.ToString(val[0]);
valoreCSV.denominazione = Convert.ToString(val[1]);
valoreCSV.dalMese = Convert.ToString(val[2]);
valoreCSV.dalTipoCedolino = Convert.ToString(val[3]);
valoreCSV.alMese = Convert.ToString(val[4]);
valoreCSV.alTipoCedolino = Convert.ToString(val[5]);
valoreCSV.regimeContabile = Convert.ToString(val[6]);
valoreCSV.progressivoRipartizione = Convert.ToString(val[7]);
valoreCSV.descrizioneProgressivoRipartizione = Convert.ToString(val[8]);
valoreCSV.contabilitaDiDestinazione = Convert.ToString(val[9]);
valoreCSV.descrizioneContabilitaDestinazione = Convert.ToString(val[10]);
valoreCSV.modalitaDiStampa = Convert.ToString(val[11]);
valoreCSV.codiceConto = Convert.ToString(val[12]);
valoreCSV.descrizioneConto = Convert.ToString(val[13]);
valoreCSV.importoDare = Convert.ToString(val[14]);
valoreCSV.importoAvere = Convert.ToString(val[15]);
valoreCSV.importoSaldo = Convert.ToString(val[16]);
return valoreCSV;
}
}
public class Appoggio
{
public string codice { get; set; }
//public int codice { get; set; }
public int numFileXml { get; set; }
}
#endregion
}