From f241a7e274ce6e87202d97312cb709bd3ba15ece Mon Sep 17 00:00:00 2001 From: michele Date: Mon, 9 Dec 2024 16:29:16 +0100 Subject: [PATCH] Nascosti: - campo input txtCodAzi - btnConverti - btnXmlInv Aggiunti: 8 btn per azienda per generazione xml/xml inv creati nuovi eventi per bottoni e due nuovi metodi per generazione xml. --- Properties/AssemblyInfo.cs | 36 + Properties/Resources.Designer.cs | 71 + Properties/Resources.resx | 117 ++ Properties/Settings.Designer.cs | 30 + Properties/Settings.settings | 7 + frmCSVToXML.Designer.cs | 201 ++- frmCSVToXML.cs | 2589 ++++++++++++++++++++---------- 7 files changed, 2218 insertions(+), 833 deletions(-) create mode 100644 Properties/AssemblyInfo.cs create mode 100644 Properties/Resources.Designer.cs create mode 100644 Properties/Resources.resx create mode 100644 Properties/Settings.Designer.cs create mode 100644 Properties/Settings.settings diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..40f566d --- /dev/null +++ b/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Le informazioni generali relative a un assembly sono controllate dal seguente +// set di attributi. Modificare i valori di questi attributi per modificare le informazioni +// associate a un assembly. +[assembly: AssemblyTitle("CSVToXML")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("CSVToXML")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Se si imposta ComVisible su false, i tipi in questo assembly non saranno visibili +// ai componenti COM. Se è necessario accedere a un tipo in questo assembly da +// COM, impostare su true l'attributo ComVisible per tale tipo. +[assembly: ComVisible(false)] + +// Se il progetto viene esposto a COM, il GUID seguente verrà utilizzato come ID della libreria dei tipi +[assembly: Guid("a4667921-71e9-4050-9744-6db88844c01c")] + +// Le informazioni sulla versione di un assembly sono costituite dai seguenti quattro valori: +// +// Versione principale +// Versione secondaria +// Numero di build +// Revisione +// +// È possibile specificare tutti i valori oppure impostare valori predefiniti per i numeri relativi alla revisione e alla build +// usando l'asterisco '*' come illustrato di seguito: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs new file mode 100644 index 0000000..086124c --- /dev/null +++ b/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// Codice generato da uno strumento. +// Versione runtime:4.0.30319.42000 +// +// Le modifiche apportate a questo file possono causare un comportamento non corretto e andranno perse se +// il codice viene rigenerato. +// +//------------------------------------------------------------------------------ + +namespace CSVToXML.Properties +{ + + + /// + /// Classe di risorse fortemente tipizzata per la ricerca di stringhe localizzate e così via. + /// + // Questa classe è stata generata automaticamente dalla classe StronglyTypedResourceBuilder + // tramite uno strumento quale ResGen o Visual Studio. + // Per aggiungere o rimuovere un membro, modificare il file .ResX, quindi eseguire di nuovo ResGen + // con l'opzione /str oppure ricompilare il progetto VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Restituisce l'istanza di ResourceManager memorizzata nella cache e usata da questa classe. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CSVToXML.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Esegue l'override della proprietà CurrentUICulture del thread corrente per tutte + /// le ricerche di risorse che utilizzano questa classe di risorse fortemente tipizzata. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/Properties/Resources.resx b/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Properties/Settings.Designer.cs b/Properties/Settings.Designer.cs new file mode 100644 index 0000000..518e007 --- /dev/null +++ b/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace CSVToXML.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/Properties/Settings.settings b/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/frmCSVToXML.Designer.cs b/frmCSVToXML.Designer.cs index c6af3e9..204e449 100644 --- a/frmCSVToXML.Designer.cs +++ b/frmCSVToXML.Designer.cs @@ -39,23 +39,35 @@ this.txtCodAzi = new System.Windows.Forms.TextBox(); this.dtpAnnoMese = new System.Windows.Forms.DateTimePicker(); this.btnXmlInv = new System.Windows.Forms.Button(); + this.btnDekra = new System.Windows.Forms.Button(); + this.btnDekraInv = new System.Windows.Forms.Button(); + this.btnDtcInv = new System.Windows.Forms.Button(); + this.btnDtc = new System.Windows.Forms.Button(); + this.btnDakInv = new System.Windows.Forms.Button(); + this.btnDak = new System.Windows.Forms.Button(); + this.btnDinvestInv = new System.Windows.Forms.Button(); + this.btnDinvest = new System.Windows.Forms.Button(); + this.lblDekra = new System.Windows.Forms.Label(); + this.lblDtc = new System.Windows.Forms.Label(); + this.lblDak = new System.Windows.Forms.Label(); + this.lblDinvest = new System.Windows.Forms.Label(); this.SuspendLayout(); // // txtArea // this.txtArea.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtArea.Location = new System.Drawing.Point(17, 181); + this.txtArea.Location = new System.Drawing.Point(12, 202); this.txtArea.Multiline = true; this.txtArea.Name = "txtArea"; this.txtArea.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.txtArea.Size = new System.Drawing.Size(604, 324); + this.txtArea.Size = new System.Drawing.Size(611, 367); this.txtArea.TabIndex = 7; // // lblCSV // this.lblCSV.AutoSize = true; this.lblCSV.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblCSV.Location = new System.Drawing.Point(15, 91); + this.lblCSV.Location = new System.Drawing.Point(15, 50); this.lblCSV.Name = "lblCSV"; this.lblCSV.Size = new System.Drawing.Size(124, 15); this.lblCSV.TabIndex = 1; @@ -70,7 +82,7 @@ // txtFile // this.txtFile.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtFile.Location = new System.Drawing.Point(17, 109); + this.txtFile.Location = new System.Drawing.Point(17, 68); this.txtFile.Name = "txtFile"; this.txtFile.Size = new System.Drawing.Size(516, 23); this.txtFile.TabIndex = 3; @@ -78,9 +90,9 @@ // btnCercaFile // this.btnCercaFile.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnCercaFile.Location = new System.Drawing.Point(540, 109); + this.btnCercaFile.Location = new System.Drawing.Point(540, 68); this.btnCercaFile.Name = "btnCercaFile"; - this.btnCercaFile.Size = new System.Drawing.Size(82, 23); + this.btnCercaFile.Size = new System.Drawing.Size(83, 23); this.btnCercaFile.TabIndex = 4; this.btnCercaFile.Text = "Cerca"; this.btnCercaFile.UseVisualStyleBackColor = true; @@ -89,29 +101,30 @@ // btnConverti // this.btnConverti.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnConverti.Location = new System.Drawing.Point(18, 148); + this.btnConverti.Location = new System.Drawing.Point(454, 35); this.btnConverti.Name = "btnConverti"; this.btnConverti.Size = new System.Drawing.Size(79, 27); this.btnConverti.TabIndex = 5; this.btnConverti.Text = "Genera XML"; this.btnConverti.UseVisualStyleBackColor = true; - this.btnConverti.Click += new System.EventHandler(this.btnConverti_Click); + this.btnConverti.Visible = false; // // lblCodAzi // this.lblCodAzi.AutoSize = true; this.lblCodAzi.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblCodAzi.Location = new System.Drawing.Point(15, 15); + this.lblCodAzi.Location = new System.Drawing.Point(427, 11); this.lblCodAzi.Name = "lblCodAzi"; this.lblCodAzi.Size = new System.Drawing.Size(92, 15); this.lblCodAzi.TabIndex = 6; this.lblCodAzi.Text = "Codice Azienda:"; + this.lblCodAzi.Visible = false; // // lblData // this.lblData.AutoSize = true; this.lblData.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblData.Location = new System.Drawing.Point(15, 57); + this.lblData.Location = new System.Drawing.Point(15, 16); this.lblData.Name = "lblData"; this.lblData.Size = new System.Drawing.Size(75, 15); this.lblData.TabIndex = 7; @@ -120,17 +133,17 @@ // txtCodAzi // this.txtCodAzi.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtCodAzi.Location = new System.Drawing.Point(113, 12); + this.txtCodAzi.Location = new System.Drawing.Point(525, 8); this.txtCodAzi.MaxLength = 4; this.txtCodAzi.Name = "txtCodAzi"; this.txtCodAzi.Size = new System.Drawing.Size(98, 23); this.txtCodAzi.TabIndex = 1; - this.txtCodAzi.Leave += new System.EventHandler(this.txtCodAzi_Leave); + this.txtCodAzi.Visible = false; // // dtpAnnoMese // this.dtpAnnoMese.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.dtpAnnoMese.Location = new System.Drawing.Point(113, 53); + this.dtpAnnoMese.Location = new System.Drawing.Point(94, 12); this.dtpAnnoMese.Name = "dtpAnnoMese"; this.dtpAnnoMese.Size = new System.Drawing.Size(194, 23); this.dtpAnnoMese.TabIndex = 2; @@ -138,19 +151,163 @@ // btnXmlInv // this.btnXmlInv.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnXmlInv.Location = new System.Drawing.Point(103, 148); + this.btnXmlInv.Location = new System.Drawing.Point(539, 35); this.btnXmlInv.Name = "btnXmlInv"; this.btnXmlInv.Size = new System.Drawing.Size(84, 27); this.btnXmlInv.TabIndex = 6; this.btnXmlInv.Text = "XML Inv."; this.btnXmlInv.UseVisualStyleBackColor = true; - this.btnXmlInv.Click += new System.EventHandler(this.btnXmlInv_Click); + this.btnXmlInv.Visible = false; + // + // btnDekra + // + this.btnDekra.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnDekra.Location = new System.Drawing.Point(17, 123); + this.btnDekra.Name = "btnDekra"; + this.btnDekra.Size = new System.Drawing.Size(93, 27); + this.btnDekra.TabIndex = 8; + this.btnDekra.Text = "DEKRA IT."; + this.btnDekra.UseVisualStyleBackColor = true; + this.btnDekra.Click += new System.EventHandler(this.btnDekra_Click); + // + // btnDekraInv + // + this.btnDekraInv.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnDekraInv.Location = new System.Drawing.Point(17, 156); + this.btnDekraInv.Name = "btnDekraInv"; + this.btnDekraInv.Size = new System.Drawing.Size(93, 27); + this.btnDekraInv.TabIndex = 9; + this.btnDekraInv.Text = "DEKRA IT. INV."; + this.btnDekraInv.UseVisualStyleBackColor = true; + this.btnDekraInv.Click += new System.EventHandler(this.btnDekraInv_Click); + // + // btnDtcInv + // + this.btnDtcInv.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnDtcInv.Location = new System.Drawing.Point(196, 156); + this.btnDtcInv.Name = "btnDtcInv"; + this.btnDtcInv.Size = new System.Drawing.Size(79, 27); + this.btnDtcInv.TabIndex = 11; + this.btnDtcInv.Text = "DTC INV."; + this.btnDtcInv.UseVisualStyleBackColor = true; + this.btnDtcInv.Click += new System.EventHandler(this.btnDtcInv_Click); + // + // btnDtc + // + this.btnDtc.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnDtc.Location = new System.Drawing.Point(196, 123); + this.btnDtc.Name = "btnDtc"; + this.btnDtc.Size = new System.Drawing.Size(79, 27); + this.btnDtc.TabIndex = 10; + this.btnDtc.Text = "DTC"; + this.btnDtc.UseVisualStyleBackColor = true; + this.btnDtc.Click += new System.EventHandler(this.btnDtc_Click); + // + // btnDakInv + // + this.btnDakInv.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnDakInv.Location = new System.Drawing.Point(372, 156); + this.btnDakInv.Name = "btnDakInv"; + this.btnDakInv.Size = new System.Drawing.Size(79, 27); + this.btnDakInv.TabIndex = 13; + this.btnDakInv.Text = "DAK INV."; + this.btnDakInv.UseVisualStyleBackColor = true; + this.btnDakInv.Click += new System.EventHandler(this.btnDakInv_Click); + // + // btnDak + // + this.btnDak.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnDak.Location = new System.Drawing.Point(372, 123); + this.btnDak.Name = "btnDak"; + this.btnDak.Size = new System.Drawing.Size(79, 27); + this.btnDak.TabIndex = 12; + this.btnDak.Text = "DAK"; + this.btnDak.UseVisualStyleBackColor = true; + this.btnDak.Click += new System.EventHandler(this.btnDak_Click); + // + // btnDinvestInv + // + this.btnDinvestInv.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnDinvestInv.Location = new System.Drawing.Point(525, 156); + this.btnDinvestInv.Name = "btnDinvestInv"; + this.btnDinvestInv.Size = new System.Drawing.Size(98, 27); + this.btnDinvestInv.TabIndex = 15; + this.btnDinvestInv.Text = "DINVEST INV."; + this.btnDinvestInv.UseVisualStyleBackColor = true; + this.btnDinvestInv.Click += new System.EventHandler(this.btnDinvestInv_Click); + // + // btnDinvest + // + this.btnDinvest.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnDinvest.Location = new System.Drawing.Point(525, 123); + this.btnDinvest.Name = "btnDinvest"; + this.btnDinvest.Size = new System.Drawing.Size(98, 27); + this.btnDinvest.TabIndex = 14; + this.btnDinvest.Text = "DINVEST"; + this.btnDinvest.UseVisualStyleBackColor = true; + this.btnDinvest.Click += new System.EventHandler(this.btnDinvest_Click); + // + // lblDekra + // + this.lblDekra.AutoSize = true; + this.lblDekra.BackColor = System.Drawing.Color.Transparent; + this.lblDekra.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblDekra.Location = new System.Drawing.Point(25, 105); + this.lblDekra.Name = "lblDekra"; + this.lblDekra.Size = new System.Drawing.Size(79, 15); + this.lblDekra.TabIndex = 16; + this.lblDekra.Text = "DEKRA ITALIA"; + // + // lblDtc + // + this.lblDtc.AutoSize = true; + this.lblDtc.BackColor = System.Drawing.Color.Transparent; + this.lblDtc.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblDtc.Location = new System.Drawing.Point(222, 105); + this.lblDtc.Name = "lblDtc"; + this.lblDtc.Size = new System.Drawing.Size(27, 15); + this.lblDtc.TabIndex = 17; + this.lblDtc.Text = "DTC"; + // + // lblDak + // + this.lblDak.AutoSize = true; + this.lblDak.BackColor = System.Drawing.Color.Transparent; + this.lblDak.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblDak.Location = new System.Drawing.Point(395, 105); + this.lblDak.Name = "lblDak"; + this.lblDak.Size = new System.Drawing.Size(30, 15); + this.lblDak.TabIndex = 18; + this.lblDak.Text = "DAK"; + // + // lblDinvest + // + this.lblDinvest.AutoSize = true; + this.lblDinvest.BackColor = System.Drawing.Color.Transparent; + this.lblDinvest.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblDinvest.Location = new System.Drawing.Point(548, 105); + this.lblDinvest.Name = "lblDinvest"; + this.lblDinvest.Size = new System.Drawing.Size(52, 15); + this.lblDinvest.TabIndex = 19; + this.lblDinvest.Text = "DINVEST"; // // frmCSVToXML // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(633, 517); + this.ClientSize = new System.Drawing.Size(633, 576); + this.Controls.Add(this.lblDinvest); + this.Controls.Add(this.lblDak); + this.Controls.Add(this.lblDtc); + this.Controls.Add(this.lblDekra); + this.Controls.Add(this.btnDinvestInv); + this.Controls.Add(this.btnDinvest); + this.Controls.Add(this.btnDakInv); + this.Controls.Add(this.btnDak); + this.Controls.Add(this.btnDtcInv); + this.Controls.Add(this.btnDtc); + this.Controls.Add(this.btnDekraInv); + this.Controls.Add(this.btnDekra); this.Controls.Add(this.btnXmlInv); this.Controls.Add(this.dtpAnnoMese); this.Controls.Add(this.txtCodAzi); @@ -182,6 +339,18 @@ private System.Windows.Forms.TextBox txtCodAzi; private System.Windows.Forms.DateTimePicker dtpAnnoMese; private System.Windows.Forms.Button btnXmlInv; + private System.Windows.Forms.Button btnDekra; + private System.Windows.Forms.Button btnDekraInv; + private System.Windows.Forms.Button btnDtcInv; + private System.Windows.Forms.Button btnDtc; + private System.Windows.Forms.Button btnDakInv; + private System.Windows.Forms.Button btnDak; + private System.Windows.Forms.Button btnDinvestInv; + private System.Windows.Forms.Button btnDinvest; + private System.Windows.Forms.Label lblDekra; + private System.Windows.Forms.Label lblDtc; + private System.Windows.Forms.Label lblDak; + private System.Windows.Forms.Label lblDinvest; } } diff --git a/frmCSVToXML.cs b/frmCSVToXML.cs index 3070e7b..991b850 100644 --- a/frmCSVToXML.cs +++ b/frmCSVToXML.cs @@ -23,6 +23,9 @@ namespace CSVToXML //viene letto nel file XmlConfigFile.xml dentro alla cartella bin del progetto public static string pathDestinazione = string.Empty; + private decimal _totDare = 0; + private decimal _totAvere = 0; + public frmCSVToXML() { InitializeComponent(); @@ -50,7 +53,7 @@ namespace CSVToXML switch (nome) { - case "diOutput": + case "dirOutput": pathDestinazione = valore; //txtArea.Text = $"{pathDestinazione}"; break; @@ -174,8 +177,12 @@ namespace CSVToXML TotDare += item.DoubleImportoDare; TotAvere += item.DoubleImportoAvere; } - var differenza = TotDare - TotAvere; + _totDare = TotDare; + _totAvere = TotAvere; + + var differenza = TotDare - TotAvere; + if (differenza != 0) { var strErrore = MessageBox.Show($"LA differenza tra gli importi in DARE e gli importi in AVERE deve essere ZERO.", @@ -184,6 +191,800 @@ namespace CSVToXML } } + private void ProduciXml(string codAzi) + { + //la data non la controllo perchè se non la modifico prende la data di oggi + txtArea.Clear(); + + txtArea.Text = $"Premere Genera XML/XML Inv. per iniziare la procedura di conversione." + + Environment.NewLine; + + var list = CreaOggettiPerConversioni(); + + var listaAppoggio = NumeroFileXMLDaProdurre(list); + var listaXml = new List(); + var numberXml = 1; + var path = string.Empty; + var pathCompleto = string.Empty; + //questo sarà il contenuto del tag xml + //30/05/2022 pare che tag recordcount debba essere fisso a 1 quindi commento tutto ciò che lo riguarda + //var recordcount = 0; + + var dateString = string.Empty; + + //12/07/2024 - Il cliente ha chiesto un alert che non blocchi la creazione del file XML ma che mostri quali dipendenti + //non hanno valorizzati i campi "codice dato ripartizione 4" e "codice dato ripartizione 5" dentro il csv. + var listaNomiAlert = new List(); + var nomeDipNoValore = string.Empty; + + //data per gli attributi del tag E1FIKPF per i file DATA + var dateTimePeaker = dtpAnnoMese; + var dateBLDAT = dtpAnnoMese.Value.ToString("yyyyMMdd"); + var dateBUDAT = dtpAnnoMese.Value.ToString("yyyyMMdd"); + var dateXBLNRYear = dtpAnnoMese.Value.Year.ToString(); + var dateXBLNRMonth = dtpAnnoMese.Value.Month.ToString(); + + if (dateXBLNRMonth.Length == 1) + { + dateXBLNRMonth = "0" + dateXBLNRMonth; + } + + var dateBKTXTYear = dtpAnnoMese.Value.Year.ToString(); + var dateBKTXTMonth = dtpAnnoMese.Value.Month.ToString(); + + if (dateBKTXTMonth.Length == 1) + { + dateBKTXTMonth = "0" + dateBKTXTMonth; + } + + var erroreTrovato = 0; + var msgDato = 0; + + //Controllo che per ogni codifica della ripartizione 3 ci sia uno e uno solo codice dipendete + foreach (var item in listaAppoggio) + { + /* + * filtro la lista così ad ogni iterata avrò solo le righe della lista con codifica della ripartizione 3 = a quello + * dell'elemento della listaAppoggio che sto ciclando. coì per ogni "codifica" posso crearmi il suo xml + */ + + //28/03/2022 commentato perchè si deve usare codifica della ripartizione 3 come elementi di rottura. + //var listaFiltrata = list.Where(x => x.CodiceDatoRipartizione4.Equals(app.codice)).ToList(); + + var listaFiltrata = list.Where(x => x.CodificaDellaRipartizione3.Equals(item.codice)).ToList(); + + //controllo che alla stessa codifica della ripartizione 3 non appartengano più codici dipendenti + var codiceDipendente = listaFiltrata.First().CodiceDipendente; + var listaNomiErrori = new List(); + var nomeDipendente = string.Empty; + + foreach (var elem in listaFiltrata) + { + if (elem.CodiceDatoRipartizione4.Equals("\"\"") || elem.CodiceDatoRipartizione5.Equals("\"\"")) + { + nomeDipNoValore = elem.CodiceDipendente + " - " + elem.Nome + " " + elem.Cognome; + listaNomiAlert.Add(nomeDipNoValore); + } + + //if (codiceDipendente != elem.CodiceDipendente) + if (string.IsNullOrEmpty(elem.CodiceDatoRipartizione3/*CodificaDellaRipartizione3*/)) + { + nomeDipendente = elem.Cognome + " " + elem.Nome; + + var trovato = 0; + + foreach (var nomeDip in listaNomiErrori) + { + var nome1 = nomeDipendente.Replace(" ", ""); + var nome2 = nomeDip.Replace(" ", ""); + if (nome1.Equals(nome2)) + { + trovato = 1; + break; + } + } + + if (trovato != 1) + { + listaNomiErrori.Add(nomeDipendente); + } + + erroreTrovato = 1; + } + } + + if (erroreTrovato == 1) + { + if (msgDato == 0) + { + //var codifRip3 = elem.CodificaDellaRipartizione3; + txtArea.Text += Environment.NewLine + + "GENERAZIONE XML NON AVVENUTA."; + txtArea.Text += Environment.NewLine + + Environment.NewLine + + $"Controllare le codifiche della ripartizione 3 per i seguenti dipendenti:" + + Environment.NewLine; + + var str = MessageBox.Show($"Non ci possono essere dipendenti con CODICE DELLA RIPARTIZIONE 3 vuoto." + + Environment.NewLine + + $"Correggere per poter creare l'XML", + "IL CODICE DELLA RIPARTIZIONE 3 VUOTO.", + MessageBoxButtons.OK, MessageBoxIcon.Error); + + msgDato = 1; + } + + foreach (var nomi in listaNomiErrori) + { + txtArea.Text += $"- {nomi}" + + Environment.NewLine; + } + } + } + + //FILE DATA string builder + StringBuilder stringDATA = new StringBuilder(); + + //FILE CONT string builder + StringBuilder stringCONT = new StringBuilder(); + + if (listaNomiAlert.Count != 0) + { + //mostro a video l'elenco dei dipendenti che hanno l'alert. + txtArea.Text += Environment.NewLine + + "I seguenti dipendenti non hanno valorizzati i Codice dato ripartizione 4 o Codice dato ripartizione 5:" + + Environment.NewLine; + + foreach (var nomiDip in listaNomiAlert) + { + txtArea.Text += $"- {nomiDip.Replace("\"", "")}" + + Environment.NewLine; + } + } + + //list.Where(x => x.CodiceDatoRipartizione4.Contains("1")).ToList(); + if (list != null && list.Any() && erroreTrovato == 0) + { + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append($""); + + stringCONT.Append(""); + stringCONT.Append(""); + + foreach (var app in listaAppoggio) + { + /* + * filtro la lista così ad ogni iterata avrò solo le righe della lista con codice ripartizione uguale a quello + * dell'elemento della listaAppoggio che sto ciclando. così per ogni "codice" posso crearmi il suo xml + */ + + //28/03/2022 commentato perchè si deve usare codifica della ripartizione 3 come elementi di rottura. + //var listaFiltrata = list.Where(x => x.CodiceDatoRipartizione4.Equals(app.codice)).ToList(); + + var listaFiltrata = list.Where(x => x.CodificaDellaRipartizione3.Equals(app.codice)).ToList(); + + if (app.numFileXml != numberXml) + { + //txtArea.Text += Environment.NewLine + //+ $"Finito {numberXml}"; + + stringDATA.Append(""); + stringDATA.Append(""); + + Thread.Sleep(1000); + dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); + + //Thread.Sleep(1000); + + //path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_DATA.xml"; + path = $@"{pathDestinazione}\d10015_52905_{dateString}_DATA.xml"; + //path = $@"C:\Users\miche\Desktop\FileXML\d10015_52905_{dateString}_DATA.xml"; + + //scrivo file xml + File.WriteAllText(path, stringDATA.ToString()); + + //controllo se il file è stato creato. + if (File.Exists(path)) + { + txtArea.Text += Environment.NewLine + + $"File d10015_52905_{dateString}_DATA.xml creato correttamente" + + Environment.NewLine; + } + else + { + txtArea.Text += Environment.NewLine + + $"File d10015_52905_{dateString}_DATA.xml NON creato" + + Environment.NewLine; + } + + //pulisco stringbuilder + stringDATA.Clear(); + + //riapro tag del nuovo file xml DATA + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append($""); + + //txtArea.Text += Environment.NewLine + //+ $"Finito {numberXml}"; + numberXml++; + + //FILE CONT + stringCONT.Append(""); + stringCONT.Append($"{1/*recordcount*/}"); + stringCONT.Append(""); + stringCONT.Append(""); + dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); + path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_CONT.xml"; + path = $@"{pathDestinazione}\d10015_52905_{dateString}_CONT.xml"; + //path = $@"C:\Users\miche\Desktop\FileXML\d10015_52905_{dateString}_CONT.xml"; + + File.WriteAllText(path, stringCONT.ToString()); + + //controllo se il file è stato creato. + if (File.Exists(path)) + { + txtArea.Text += Environment.NewLine + + $"File d10015_52905_{dateString}_CONT.xml creato correttamente" + + Environment.NewLine; + } + else + { + txtArea.Text += Environment.NewLine + + $"File d10015_52905_{dateString}_CONT.xml NON creato" + + Environment.NewLine; + } + + //recordcount = 0; + + //pulisco stringbuilder + stringCONT.Clear(); + + //riapro i tag del nuovo file xml CONT + stringCONT.Append(""); + stringCONT.Append(""); + } + + //possibile soluzione + //recordcount += listaFiltrata.Count(); + + foreach (var item in listaFiltrata) + { + //UTILIZZATO SOLO PER VEDERE CHE DATO RIPARTIZIONE FOSSE (NON SERVE) + //myStringbuilder.Append(""); + //myStringbuilder.Append($"{app.codice}"); + //myStringbuilder.Append(""); + + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append("S"); + stringDATA.Append(""); + stringDATA.Append(""); + //prima dell'if sostituisco la , col . per poter castare a decimale la stringa + if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0) + { + //13/01/2023 MODIFICATO + //stringDATA.Append("H"); + stringDATA.Append("S"); + } + else + { + //13/01/2023 MODIFICATO + //stringDATA.Append("S"); + stringDATA.Append("H"); + + } + + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + //var impo = item.ImportoDare.Replace(",", "."); + + if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0) + { + stringDATA.Append($"{item.ImportoDare.Replace(",", ".")}"); + } + else + { + stringDATA.Append($"{item.ImportoAvere.Replace(",", ".")}"); + } + + stringDATA.Append(""); + stringDATA.Append(""); + + if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0) + { + stringDATA.Append($"{item.ImportoDare.Replace(",", ".")}"); + } + else + { + stringDATA.Append($"{item.ImportoAvere.Replace(",", ".")}"); + } + + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + //28/03/2022 chiesto di modificare da Gastone con CodificaDellaRipartizione3(col. AJ su Excel) anzichè CodiceDatoRipartizione3 (col. AI su Excel) + //21/10/2022 chiesto da modificare da Gastone e rimettere CodiceDatoRipartizione3 (col. AI su Excel) anzichè CodificaDellaRipartizione3(col. AJ su Excel) + stringDATA.Append($"{item./*CodificaDellaRipartizione3*/CodiceDatoRipartizione3.Replace("\"", "")}"); + stringDATA.Append(""); + stringDATA.Append(""); + //MF 03/10/2023 DOPO CALL CON GASTONE DECISO DI RIMETTERE CODICE CONTO E TOGLIERE CODICE CONTROPARTITA PERCHè SENò SPUTTANA S E H PER DARE E AVERE + //MF 29/07/2024 COMMENTATA PERCHEè USA LA RIGA SOTTO + //stringDATA.Append($"{item.CodiceConto/*CodiceContropartita*/}"); + //MF 29/07/2024 MESSO REPLACE PERCHè LA STRUTTURA CSV NEL CAMPO CONTO COMPARE COME \" + stringDATA.Append($"{item.CodiceConto.Replace("\"", "")/*CodiceContropartita*/}"); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + } + } + + stringDATA.Append(""); + stringDATA.Append(""); + Thread.Sleep(1000); + dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); + path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_DATA.xml"; + path = $@"{pathDestinazione}\d10015_52905_{dateString}_DATA.xml"; + + File.WriteAllText(path, stringDATA.ToString()); + + //controllo se il file è stato creato. + if (File.Exists(path)) + { + txtArea.Text += Environment.NewLine + + $"File d10015_52905_{dateString}_DATA.xml creato correttamente" + + Environment.NewLine; + } + else + { + txtArea.Text += Environment.NewLine + + $"File d10015_52905_{dateString}_DATA.xml NON creato" + + Environment.NewLine; + } + + stringCONT.Append(""); + //30/05/2022 pare che questo sia un dato fisso a 1 + stringCONT.Append($"{1/*recordcount*/}"); + stringCONT.Append(""); + stringCONT.Append(""); + dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); + //path = $@"C:\ProgettiVisualStudio\OutputXML\filexml_{numberXml}.xml"; + Thread.Sleep(1000); + path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_CONT.xml"; + path = $@"{pathDestinazione}\d10015_52905_{dateString}_CONT.xml"; + //path = $@"C:\Users\miche\Desktop\FileXML\d10015_52905_{dateString}_CONT.xml"; + + File.WriteAllText(path, stringCONT.ToString()); + + //controllo se il file è stato creato. + if (File.Exists(path)) + { + txtArea.Text += Environment.NewLine + + $"File d10015_52905_{dateString}_CONT.xml creato correttamente" + + Environment.NewLine; + + txtArea.Text += Environment.NewLine + + $"Totale VOCI DARE: {_totDare} - Totale VOCI AVERE: {_totAvere}" + + Environment.NewLine; + + txtArea.Text += Environment.NewLine + + $"Procedura terminata." + + Environment.NewLine; + } + else + { + txtArea.Text += Environment.NewLine + + $"File d10015_52905_{dateString}_CONT.xml NON creato" + + Environment.NewLine; + } + } + } + + private void ProduciXmlInv(string codAzi) + { + //controllo che codice azienda sia inserito da input, senò non genero l'xml + //la data non la controllo perchè se non la modifico prende la data di oggi + txtArea.Clear(); + txtArea.Text = $"Premere Genera XML/XML Inv. per iniziare la procedura di conversione." + + Environment.NewLine; + + var list = CreaOggettiPerConversioni(); + + var listaAppoggio = NumeroFileXMLDaProdurre(list); + var listaXml = new List(); + var numberXml = 1; + var path = string.Empty; + var pathCompleto = string.Empty; + + //questo sarà il contenuto del tag xml + //30/05/2022 pare che tag recordcount debba essere fisso a 1 quindi commento tutto ciò che lo riguarda + //var recordcount = 0; + var dateString = string.Empty; + + //12/07/2024 - Il cliente ha chiesto un alert che non blocchi la creazione del file XML ma che mostri quali dipendenti + //non hanno valorizzati i campi "codice dato ripartizione 4" e "codice dato ripartizione 5" dentro il csv. + var listaNomiAlert = new List(); + var nomeDipNoValore = string.Empty; + + //data per gli attributi del tag E1FIKPF per i file DATA + var dateTimePeaker = dtpAnnoMese; + var dateBLDAT = dtpAnnoMese.Value.ToString("yyyyMMdd"); + var dateBUDAT = dtpAnnoMese.Value.ToString("yyyyMMdd"); + var dateXBLNRYear = dtpAnnoMese.Value.Year.ToString(); + var dateXBLNRMonth = dtpAnnoMese.Value.Month.ToString(); + + if (dateXBLNRMonth.Length == 1) + { + dateXBLNRMonth = "0" + dateXBLNRMonth; + } + + var dateBKTXTYear = dtpAnnoMese.Value.Year.ToString(); + var dateBKTXTMonth = dtpAnnoMese.Value.Month.ToString(); + + if (dateBKTXTMonth.Length == 1) + { + dateBKTXTMonth = "0" + dateBKTXTMonth; + } + + var erroreTrovato = 0; + var msgDato = 0; + + //Controllo che per ogni codifica della ripartizione 3 ci sia uno e uno solo codice dipendete + foreach (var item in listaAppoggio) + { + //filtro la lista così ad ogni iterata avrò solo le righe della lista con codifica della ripartizione 3 = a quello + //dell'elemento della listaAppoggio che sto ciclando. coì per ogni "codifica" posso crearmi il suo xml + + //28/03/2022 commentato perchè si deve usare codifica della ripartizione 3 come elementi di rottura. + //var listaFiltrata = list.Where(x => x.CodiceDatoRipartizione4.Equals(app.codice)).ToList(); + var listaFiltrata = list.Where(x => x.CodificaDellaRipartizione3.Equals(item.codice)).ToList(); + + //controllo che alla stessa codifica della ripartizione 3 non appartengano più codici dipendenti + var codiceDipendente = listaFiltrata.First().CodiceDipendente; + var listaNomiErrori = new List(); + var nomeDipendente = string.Empty; + + foreach (var elem in listaFiltrata) + { + if (elem.CodiceDatoRipartizione4.Equals("\"\"") || elem.CodiceDatoRipartizione5.Equals("\"\"")) + { + nomeDipNoValore = elem.CodiceDipendente + " - " + elem.Nome + " " + elem.Cognome; + listaNomiAlert.Add(nomeDipNoValore.Replace(" ", "")); + } + + //if (codiceDipendente != elem.CodiceDipendente) + if (string.IsNullOrEmpty(elem.CodiceDatoRipartizione3/*CodificaDellaRipartizione3*/)) + { + nomeDipendente = elem.Cognome + " " + elem.Nome; + + var trovato = 0; + + foreach (var nomeDip in listaNomiErrori) + { + var nome1 = nomeDipendente.Replace(" ", ""); + var nome2 = nomeDip.Replace(" ", ""); + if (nome1.Equals(nome2)) + { + trovato = 1; + break; + } + } + + if (trovato != 1) + { + listaNomiErrori.Add(nomeDipendente); + } + + erroreTrovato = 1; + + //break; + } + } + + if (erroreTrovato == 1) + { + if (msgDato == 0) + { + //var codifRip3 = elem.CodificaDellaRipartizione3; + txtArea.Text += Environment.NewLine + + "GENERAZIONE XML NON AVVENUTA."; + txtArea.Text += Environment.NewLine + + Environment.NewLine + + $"Controllare le codifiche della ripartizione 3 per i seguenti dipendenti:" + + Environment.NewLine; + + var str = MessageBox.Show($"Non ci possono essere dipendenti con CODICE DELLA RIPARTIZIONE 3 vuoto." + + Environment.NewLine + + $"Correggere per poter creare l'XML", + "IL CODICE DELLA RIPARTIZIONE 3 VUOTO.", + MessageBoxButtons.OK, MessageBoxIcon.Error); + + msgDato = 1; + } + + foreach (var nomi in listaNomiErrori) + { + txtArea.Text += $"- {nomi}" + + Environment.NewLine; + } + } + } + + //FILE DATA string builder + StringBuilder stringDATA = new StringBuilder(); + //FILE CONT string builder + StringBuilder stringCONT = new StringBuilder(); + + if (listaNomiAlert.Count != 0) + { + //mostro a video l'elenco dei dipendenti che hanno l'alert. + txtArea.Text += Environment.NewLine + + "I seguenti dipendenti non hanno valorizzati i Codice dato ripartizione 4 o Codice dato ripartizione 5:" + + Environment.NewLine; + + foreach (var nomiDip in listaNomiAlert) + { + txtArea.Text += $"- {nomiDip.Replace("\"", "")}" + + Environment.NewLine; + } + } + + //list.Where(x => x.CodiceDatoRipartizione4.Contains("1")).ToList(); + if (list != null && list.Any() && erroreTrovato == 0) + { + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append($""); + + stringCONT.Append(""); + stringCONT.Append(""); + + foreach (var app in listaAppoggio) + { + //filtro la lista così ad ogni iterata avrò solo le righe della lista con codice ripartizione = a quello + //dell'elemento della listaAppoggio che sto ciclando. coì per ogni "codice" posso crearmi il suo xml + //28/03/2022 commentato perchè si deve usare codifica della ripartizione 3 come elementi di rottura. + //var listaFiltrata = list.Where(x => x.CodiceDatoRipartizione4.Equals(app.codice)).ToList(); + var listaFiltrata = list.Where(x => x.CodificaDellaRipartizione3.Equals(app.codice)).ToList(); + + if (app.numFileXml != numberXml) + { + stringDATA.Append(""); + stringDATA.Append(""); + + Thread.Sleep(1000); + dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); + + path = $@"{pathDestinazione}\d10015_52905_{dateString}_DATA.xml"; + + //scrivo file xml + File.WriteAllText(path, stringDATA.ToString()); + + //controllo se il file è stato creato. + if (File.Exists(path)) + { + txtArea.Text += Environment.NewLine + + $"File d10015_52905_{dateString}_DATA.xml creato correttamente" + + Environment.NewLine; + } + else + { + txtArea.Text += Environment.NewLine + + $"File d10015_52905_{dateString}_DATA.xml NON creato" + + Environment.NewLine; + } + + //pulisco stringbuilder + stringDATA.Clear(); + + //riapro tag del nuovo file xml DATA + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append($""); + + numberXml++; + + //FILE CONT + stringCONT.Append(""); + stringCONT.Append($"{1/*recordcount*/}"); + stringCONT.Append(""); + stringCONT.Append(""); + dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); + path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_CONT.xml"; + path = $@"{pathDestinazione}\d10015_52905_{dateString}_CONT.xml"; + + File.WriteAllText(path, stringCONT.ToString()); + + //controllo se il file è stato creato. + if (File.Exists(path)) + { + txtArea.Text += Environment.NewLine + + $"File d10015_52905_{dateString}_CONT.xml creato correttamente" + + Environment.NewLine; + } + else + { + txtArea.Text += Environment.NewLine + + $"File d10015_52905_{dateString}_CONT.xml NON creato" + + Environment.NewLine; + } + + //recordcount = 0; + + //pulisco stringbuilder + stringCONT.Clear(); + + //riapro i tag del nuovo file xml CONT + stringCONT.Append(""); + stringCONT.Append(""); + } + + //possibile soluzione + //recordcount += listaFiltrata.Count(); + + foreach (var item in listaFiltrata) + { + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append("S"); + stringDATA.Append(""); + stringDATA.Append(""); + //IN QUESTO CONTROLLO HO INVERTITO I VALORI DI S E H + //prima dell'if sostituisco la , col . per poter castare a decimale la stringa + if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0) + { + stringDATA.Append("H"); + //stringDATA.Append("S"); //13/01/2023 modificato di nuovo (rimesso com'era prima) + } + else + { + stringDATA.Append("S"); + //stringDATA.Append("H"); //13/01/2023 modificato di nuovo (rimesso com'era prima) + } + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + //var impo = item.ImportoDare.Replace(",", "."); + if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0) + { + stringDATA.Append($"{item.ImportoDare.Replace(",", ".")}"); + } + else + { + stringDATA.Append($"{item.ImportoAvere.Replace(",", ".")}"); + } + stringDATA.Append(""); + stringDATA.Append(""); + if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0) + { + stringDATA.Append($"{item.ImportoDare.Replace(",", ".")}"); + } + else + { + stringDATA.Append($"{item.ImportoAvere.Replace(",", ".")}"); + } + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + //28/03/2022 chiesto di modificare da Gastone con CodificaDellaRipartizione3(col. AJ su Excel) anzichè CodiceDatoRipartizione3 (col. AI su Excel) + //21/10/2022 chiesto da modificare da Gastone e rimettere CodiceDatoRipartizione3 (col. AI su Excel) anzichè CodificaDellaRipartizione3(col. AJ su Excel) + stringDATA.Append($"{item./*CodificaDellaRipartizione3*/CodiceDatoRipartizione3.Replace("\"", "")}"); + stringDATA.Append(""); + stringDATA.Append(""); + //MF 03/10/2023 DOPO CALL CON GASTONE DECISO DI RIMETTERE CODICE CONTO E TOGLIERE CODICE CONTROPARTITA PERCHè SENò SPUTTANA S E H PER DARE E AVERE + stringDATA.Append($"{item.CodiceConto.Replace("\"", "")/*CodiceContropartita*/}"); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + stringDATA.Append(""); + } + } + + stringDATA.Append(""); + stringDATA.Append(""); + Thread.Sleep(1000); + dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); + //Thread.Sleep(1000); + path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_DATA.xml"; + path = $@"{pathDestinazione}\d10015_52905_{dateString}_DATA.xml"; + + File.WriteAllText(path, stringDATA.ToString()); + + //controllo se il file è stato creato. + if (File.Exists(path)) + { + txtArea.Text += Environment.NewLine + + $"File d10015_52905_{dateString}_DATA.xml creato correttamente" + + Environment.NewLine; + } + else + { + txtArea.Text += Environment.NewLine + + $"File d10015_52905_{dateString}_DATA.xml NON creato" + + Environment.NewLine; + } + + stringCONT.Append(""); + //30/05/2022 pare che questo sia un dato fisso a 1 + stringCONT.Append($"{1/*recordcount*/}"); + stringCONT.Append(""); + stringCONT.Append(""); + dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); + Thread.Sleep(1000); + path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_CONT.xml"; + path = $@"{pathDestinazione}\d10015_52905_{dateString}_CONT.xml"; + + File.WriteAllText(path, stringCONT.ToString()); + + //controllo se il file è stato creato. + if (File.Exists(path)) + { + txtArea.Text += Environment.NewLine + + $"File d10015_52905_{dateString}_CONT.xml creato correttamente" + + Environment.NewLine; + + txtArea.Text += Environment.NewLine + + $"Totale dare: {_totDare} - Totale avere: {_totAvere}" + + Environment.NewLine; + + txtArea.Text += Environment.NewLine + + $"Procedura terminata." + + Environment.NewLine; + } + else + { + txtArea.Text += Environment.NewLine + + $"File d10015_52905_{dateString}_CONT.xml NON creato" + + Environment.NewLine; + } + } + } + #endregion #region EVENTI @@ -200,426 +1001,21 @@ namespace CSVToXML } } - private void btnConverti_Click(object sender, EventArgs e) + //MF 06/12/2024 Nuova modifica richiesta dal cliente: + /* + * Creati bottoni nuovi (2 per azienda) per generare gli XML. Non verrà più inserito il codice azienda dall'utente ma + * verrà valorizzato in base al bottone dell'azienda corrispondente. (quindi il controllo sull'inserimento non servirà più + */ + + #region DEKRA ITALIA + + private void btnDekra_Click(object sender, EventArgs e) { try { - //controllo che codice azienda sia inserito da input, senò non genero l'xml - //la data non la controllo perchè se non la modifico prende la data di oggi - if (txtCodAzi.Text.Length == 4 && !string.IsNullOrEmpty(txtCodAzi.Text)) - { - txtArea.Clear(); - - txtArea.Text = $"Premere Genera XML/XML Inv. per iniziare la procedura di conversione." - + Environment.NewLine; + var codAzi = "2200"; - var list = CreaOggettiPerConversioni(); - - var listaAppoggio = NumeroFileXMLDaProdurre(list); - var listaXml = new List(); - var numberXml = 1; - var path = string.Empty; - var pathCompleto = string.Empty; - //questo sarà il contenuto del tag xml - //30/05/2022 pare che tag recordcount debba essere fisso a 1 quindi commento tutto ciò che lo riguarda - //var recordcount = 0; - var dateString = string.Empty; - - //12/07/2024 - Il cliente ha chiesto un alert che non blocchi la creazione del file XML ma che mostri quali dipendenti - //non hanno valorizzati i campi "codice dato ripartizione 4" e "codice dato ripartizione 5" dentro il csv. - var listaNomiAlert = new List(); - var nomeDipNoValore = string.Empty; - - //data per gli attributi del tag E1FIKPF per i file DATA - var dateTimePeaker = dtpAnnoMese; - var dateBLDAT = dtpAnnoMese.Value.ToString("yyyyMMdd"); - var dateBUDAT = dtpAnnoMese.Value.ToString("yyyyMMdd"); - var dateXBLNRYear = dtpAnnoMese.Value.Year.ToString(); - var dateXBLNRMonth = dtpAnnoMese.Value.Month.ToString(); - - if (dateXBLNRMonth.Length == 1) - { - dateXBLNRMonth = "0" + dateXBLNRMonth; - } - - var dateBKTXTYear = dtpAnnoMese.Value.Year.ToString(); - var dateBKTXTMonth = dtpAnnoMese.Value.Month.ToString(); - - if (dateBKTXTMonth.Length == 1) - { - dateBKTXTMonth = "0" + dateBKTXTMonth; - } - - var erroreTrovato = 0; - var msgDato = 0; - - //Controllo che per ogni codifica della ripartizione 3 ci sia uno e uno solo codice dipendete - foreach (var item in listaAppoggio) - { - //filtro la lista così ad ogni iterata avrò solo le righe della lista con codifica della ripartizione 3 = a quello - //dell'elemento della listaAppoggio che sto ciclando. coì per ogni "codifica" posso crearmi il suo xml - - //28/03/2022 commentato perchè si deve usare codifica della ripartizione 3 come elementi di rottura. - //var listaFiltrata = list.Where(x => x.CodiceDatoRipartizione4.Equals(app.codice)).ToList(); - var listaFiltrata = list.Where(x => x.CodificaDellaRipartizione3.Equals(item.codice)).ToList(); - - //controllo che alla stessa codifica della ripartizione 3 non appartengano più codici dipendenti - var codiceDipendente = listaFiltrata.First().CodiceDipendente; - var listaNomiErrori = new List(); - var nomeDipendente = string.Empty; - - foreach (var elem in listaFiltrata) - { - if (elem.CodiceDatoRipartizione4.Equals("\"\"") || elem.CodiceDatoRipartizione5.Equals("\"\"")) - { - nomeDipNoValore = elem.CodiceDipendente + " - " + elem.Nome + " " + elem.Cognome; - listaNomiAlert.Add(nomeDipNoValore); - } - - //if (codiceDipendente != elem.CodiceDipendente) - if (string.IsNullOrEmpty(elem.CodiceDatoRipartizione3/*CodificaDellaRipartizione3*/)) - { - nomeDipendente = elem.Cognome + " " + elem.Nome; - - var trovato = 0; - - foreach (var nomeDip in listaNomiErrori) - { - var nome1 = nomeDipendente.Replace(" ", ""); - var nome2 = nomeDip.Replace(" ", ""); - if (nome1.Equals(nome2)) - { - trovato = 1; - break; - } - } - - if (trovato != 1) - { - listaNomiErrori.Add(nomeDipendente); - } - - erroreTrovato = 1; - } - } - - if (erroreTrovato == 1) - { - if (msgDato == 0) - { - //var codifRip3 = elem.CodificaDellaRipartizione3; - txtArea.Text += Environment.NewLine + - "GENERAZIONE XML NON AVVENUTA."; - txtArea.Text += Environment.NewLine - + Environment.NewLine - + $"Controllare le codifiche della ripartizione 3 per i seguenti dipendenti:" - + Environment.NewLine; - - var str = MessageBox.Show($"Non ci possono essere dipendenti con CODICE DELLA RIPARTIZIONE 3 vuoto." + - Environment.NewLine + - $"Correggere per poter creare l'XML", - "IL CODICE DELLA RIPARTIZIONE 3 VUOTO.", - MessageBoxButtons.OK, MessageBoxIcon.Error); - - msgDato = 1; - } - - foreach (var nomi in listaNomiErrori) - { - txtArea.Text += $"- {nomi}" - + Environment.NewLine; - } - } - } - - //FILE DATA string builder - StringBuilder stringDATA = new StringBuilder(); - //FILE CONT string builder - StringBuilder stringCONT = new StringBuilder(); - - if (listaNomiAlert.Count != 0) - { - //mostro a video l'elenco dei dipendenti che hanno l'alert. - txtArea.Text += Environment.NewLine + - "I seguenti dipendenti non hanno valorizzati i Codice dato ripartizione 4 o Codice dato ripartizione 5:" - + Environment.NewLine; - - foreach (var nomiDip in listaNomiAlert) - { - txtArea.Text += $"- {nomiDip.Replace("\"", "")}" - + Environment.NewLine; - } - } - - //list.Where(x => x.CodiceDatoRipartizione4.Contains("1")).ToList(); - if (list != null && list.Any() && erroreTrovato == 0) - { - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append($""); - - stringCONT.Append(""); - stringCONT.Append(""); - - foreach (var app in listaAppoggio) - { - //filtro la lista così ad ogni iterata avrò solo le righe della lista con codice ripartizione uguale a quello - //dell'elemento della listaAppoggio che sto ciclando. così per ogni "codice" posso crearmi il suo xml - - //28/03/2022 commentato perchè si deve usare codifica della ripartizione 3 come elementi di rottura. - //var listaFiltrata = list.Where(x => x.CodiceDatoRipartizione4.Equals(app.codice)).ToList(); - - var listaFiltrata = list.Where(x => x.CodificaDellaRipartizione3.Equals(app.codice)).ToList(); - - if (app.numFileXml != numberXml) - { - //txtArea.Text += Environment.NewLine - //+ $"Finito {numberXml}"; - - stringDATA.Append(""); - stringDATA.Append(""); - - Thread.Sleep(1000); - dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); - - //Thread.Sleep(1000); - - //path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_DATA.xml"; - path = $@"{pathDestinazione}\d10015_52905_{dateString}_DATA.xml"; - //path = $@"C:\Users\miche\Desktop\FileXML\d10015_52905_{dateString}_DATA.xml"; - - //scrivo file xml - File.WriteAllText(path, stringDATA.ToString()); - - //controllo se il file è stato creato. - if (File.Exists(path)) - { - txtArea.Text += Environment.NewLine - + $"File d10015_52905_{dateString}_DATA.xml creato correttamente" + - Environment.NewLine; - } - else - { - txtArea.Text += Environment.NewLine - + $"File d10015_52905_{dateString}_DATA.xml NON creato" + - Environment.NewLine; - } - - //pulisco stringbuilder - stringDATA.Clear(); - - //riapro tag del nuovo file xml DATA - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append($""); - - //txtArea.Text += Environment.NewLine - //+ $"Finito {numberXml}"; - numberXml++; - - //FILE CONT - stringCONT.Append(""); - stringCONT.Append($"{1/*recordcount*/}"); - stringCONT.Append(""); - stringCONT.Append(""); - dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); - path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_CONT.xml"; - path = $@"{pathDestinazione}\d10015_52905_{dateString}_CONT.xml"; - //path = $@"C:\Users\miche\Desktop\FileXML\d10015_52905_{dateString}_CONT.xml"; - - File.WriteAllText(path, stringCONT.ToString()); - - //controllo se il file è stato creato. - if (File.Exists(path)) - { - txtArea.Text += Environment.NewLine - + $"File d10015_52905_{dateString}_CONT.xml creato correttamente" + - Environment.NewLine; - } - else - { - txtArea.Text += Environment.NewLine - + $"File d10015_52905_{dateString}_CONT.xml NON creato" + - Environment.NewLine; - } - - //recordcount = 0; - - //pulisco stringbuilder - stringCONT.Clear(); - - //riapro i tag del nuovo file xml CONT - stringCONT.Append(""); - stringCONT.Append(""); - } - - //possibile soluzione - //recordcount += listaFiltrata.Count(); - - foreach (var item in listaFiltrata) - { - //UTILIZZATO SOLO PER VEDERE CHE DATO RIPARTIZIONE FOSSE (NON SERVE) - //myStringbuilder.Append(""); - //myStringbuilder.Append($"{app.codice}"); - //myStringbuilder.Append(""); - - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append("S"); - stringDATA.Append(""); - stringDATA.Append(""); - //prima dell'if sostituisco la , col . per poter castare a decimale la stringa - if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0) - { - //13/01/2023 MODIFICATO - //stringDATA.Append("H"); - stringDATA.Append("S"); - } - else - { - //13/01/2023 MODIFICATO - //stringDATA.Append("S"); - stringDATA.Append("H"); - - } - - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - //var impo = item.ImportoDare.Replace(",", "."); - - if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0) - { - stringDATA.Append($"{item.ImportoDare.Replace(",", ".")}"); - } - else - { - stringDATA.Append($"{item.ImportoAvere.Replace(",", ".")}"); - } - - stringDATA.Append(""); - stringDATA.Append(""); - - if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0) - { - stringDATA.Append($"{item.ImportoDare.Replace(",", ".")}"); - } - else - { - stringDATA.Append($"{item.ImportoAvere.Replace(",", ".")}"); - } - - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - //28/03/2022 chiesto di modificare da Gastone con CodificaDellaRipartizione3(col. AJ su Excel) anzichè CodiceDatoRipartizione3 (col. AI su Excel) - //21/10/2022 chiesto da modificare da Gastone e rimettere CodiceDatoRipartizione3 (col. AI su Excel) anzichè CodificaDellaRipartizione3(col. AJ su Excel) - stringDATA.Append($"{item./*CodificaDellaRipartizione3*/CodiceDatoRipartizione3.Replace("\"", "")}"); - stringDATA.Append(""); - stringDATA.Append(""); - //MF 03/10/2023 DOPO CALL CON GASTONE DECISO DI RIMETTERE CODICE CONTO E TOGLIERE CODICE CONTROPARTITA PERCHè SENò SPUTTANA S E H PER DARE E AVERE - //MF 29/07/2024 COMMENTATA PERCHEè USA LA RIGA SOTTO - //stringDATA.Append($"{item.CodiceConto/*CodiceContropartita*/}"); - //MF 29/07/2024 MESSO REPLACE PERCHè LA STRUTTURA CSV NEL CAMPO CONTO COMPARE COME \" - stringDATA.Append($"{item.CodiceConto.Replace("\"","")/*CodiceContropartita*/}"); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - } - } - - stringDATA.Append(""); - stringDATA.Append(""); - Thread.Sleep(1000); - dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); - path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_DATA.xml"; - path = $@"{pathDestinazione}\d10015_52905_{dateString}_DATA.xml"; - - File.WriteAllText(path, stringDATA.ToString()); - - //controllo se il file è stato creato. - if (File.Exists(path)) - { - txtArea.Text += Environment.NewLine - + $"File d10015_52905_{dateString}_DATA.xml creato correttamente" + - Environment.NewLine; - } - else - { - txtArea.Text += Environment.NewLine - + $"File d10015_52905_{dateString}_DATA.xml NON creato" + - Environment.NewLine; - } - - stringCONT.Append(""); - //30/05/2022 pare che questo sia un dato fisso a 1 - stringCONT.Append($"{1/*recordcount*/}"); - stringCONT.Append(""); - stringCONT.Append(""); - dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); - //path = $@"C:\ProgettiVisualStudio\OutputXML\filexml_{numberXml}.xml"; - Thread.Sleep(1000); - path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_CONT.xml"; - path = $@"{pathDestinazione}\d10015_52905_{dateString}_CONT.xml"; - //path = $@"C:\Users\miche\Desktop\FileXML\d10015_52905_{dateString}_CONT.xml"; - - File.WriteAllText(path, stringCONT.ToString()); - - //controllo se il file è stato creato. - if (File.Exists(path)) - { - txtArea.Text += Environment.NewLine - + $"File d10015_52905_{dateString}_CONT.xml creato correttamente" + - Environment.NewLine; - - txtArea.Text += Environment.NewLine - + $"Procedura terminata." - + Environment.NewLine; - } - else - { - txtArea.Text += Environment.NewLine - + $"File d10015_52905_{dateString}_CONT.xml NON creato" + - Environment.NewLine; - } - } - } - 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 L'XML ", - "CODICE AZIENDA MANCANTE", - MessageBoxButtons.OK, MessageBoxIcon.Error); - txtCodAzi.BackColor = Color.FromArgb(255, 102, 102); - } + ProduciXml(codAzi); } catch (Exception ex) { @@ -630,403 +1026,13 @@ namespace CSVToXML } } - //20/07/2022 - Aggiunto questo bottone perchè hanno bisogno di creare degli xml che abbiano nel tag i valori S e H - //invertiti rispetto agli xml che vengono generati con l'altro bottone. - //la verifica viene fatta in base ai valori del dare/avere. - private void btnXmlInv_Click(object sender, EventArgs e) + private void btnDekraInv_Click(object sender, EventArgs e) { try { - //controllo che codice azienda sia inserito da input, senò non genero l'xml - //la data non la controllo perchè se non la modifico prende la data di oggi - if (txtCodAzi.Text.Length == 4 && !string.IsNullOrEmpty(txtCodAzi.Text)) - { - txtArea.Clear(); - txtArea.Text = $"Premere Genera XML/XML Inv. per iniziare la procedura di conversione." - + Environment.NewLine; + var codAzi = "2200"; - var list = CreaOggettiPerConversioni(); - - var listaAppoggio = NumeroFileXMLDaProdurre(list); - var listaXml = new List(); - var numberXml = 1; - var path = string.Empty; - var pathCompleto = string.Empty; - - //questo sarà il contenuto del tag xml - //30/05/2022 pare che tag recordcount debba essere fisso a 1 quindi commento tutto ciò che lo riguarda - //var recordcount = 0; - var dateString = string.Empty; - - //12/07/2024 - Il cliente ha chiesto un alert che non blocchi la creazione del file XML ma che mostri quali dipendenti - //non hanno valorizzati i campi "codice dato ripartizione 4" e "codice dato ripartizione 5" dentro il csv. - var listaNomiAlert = new List(); - var nomeDipNoValore = string.Empty; - - //data per gli attributi del tag E1FIKPF per i file DATA - var dateTimePeaker = dtpAnnoMese; - var dateBLDAT = dtpAnnoMese.Value.ToString("yyyyMMdd"); - var dateBUDAT = dtpAnnoMese.Value.ToString("yyyyMMdd"); - var dateXBLNRYear = dtpAnnoMese.Value.Year.ToString(); - var dateXBLNRMonth = dtpAnnoMese.Value.Month.ToString(); - - if (dateXBLNRMonth.Length == 1) - { - dateXBLNRMonth = "0" + dateXBLNRMonth; - } - - var dateBKTXTYear = dtpAnnoMese.Value.Year.ToString(); - var dateBKTXTMonth = dtpAnnoMese.Value.Month.ToString(); - - if (dateBKTXTMonth.Length == 1) - { - dateBKTXTMonth = "0" + dateBKTXTMonth; - } - - var erroreTrovato = 0; - var msgDato = 0; - - //Controllo che per ogni codifica della ripartizione 3 ci sia uno e uno solo codice dipendete - foreach (var item in listaAppoggio) - { - //filtro la lista così ad ogni iterata avrò solo le righe della lista con codifica della ripartizione 3 = a quello - //dell'elemento della listaAppoggio che sto ciclando. coì per ogni "codifica" posso crearmi il suo xml - - //28/03/2022 commentato perchè si deve usare codifica della ripartizione 3 come elementi di rottura. - //var listaFiltrata = list.Where(x => x.CodiceDatoRipartizione4.Equals(app.codice)).ToList(); - var listaFiltrata = list.Where(x => x.CodificaDellaRipartizione3.Equals(item.codice)).ToList(); - - //controllo che alla stessa codifica della ripartizione 3 non appartengano più codici dipendenti - var codiceDipendente = listaFiltrata.First().CodiceDipendente; - var listaNomiErrori = new List(); - var nomeDipendente = string.Empty; - - foreach (var elem in listaFiltrata) - { - if (elem.CodiceDatoRipartizione4.Equals("\"\"") || elem.CodiceDatoRipartizione5.Equals("\"\"")) - { - nomeDipNoValore = elem.CodiceDipendente + " - " + elem.Nome + " " + elem.Cognome; - listaNomiAlert.Add(nomeDipNoValore.Replace(" ", "")); - } - - //if (codiceDipendente != elem.CodiceDipendente) - if (string.IsNullOrEmpty(elem.CodiceDatoRipartizione3/*CodificaDellaRipartizione3*/)) - { - nomeDipendente = elem.Cognome + " " + elem.Nome; - - var trovato = 0; - - foreach (var nomeDip in listaNomiErrori) - { - var nome1 = nomeDipendente.Replace(" ", ""); - var nome2 = nomeDip.Replace(" ", ""); - if (nome1.Equals(nome2)) - { - trovato = 1; - break; - } - } - - if (trovato != 1) - { - listaNomiErrori.Add(nomeDipendente); - } - - erroreTrovato = 1; - - //break; - } - } - - if (erroreTrovato == 1) - { - if (msgDato == 0) - { - //var codifRip3 = elem.CodificaDellaRipartizione3; - txtArea.Text += Environment.NewLine + - "GENERAZIONE XML NON AVVENUTA."; - txtArea.Text += Environment.NewLine - + Environment.NewLine - + $"Controllare le codifiche della ripartizione 3 per i seguenti dipendenti:" - + Environment.NewLine; - - var str = MessageBox.Show($"Non ci possono essere dipendenti con CODICE DELLA RIPARTIZIONE 3 vuoto." + - Environment.NewLine + - $"Correggere per poter creare l'XML", - "IL CODICE DELLA RIPARTIZIONE 3 VUOTO.", - MessageBoxButtons.OK, MessageBoxIcon.Error); - - msgDato = 1; - } - - foreach (var nomi in listaNomiErrori) - { - txtArea.Text += $"- {nomi}" - + Environment.NewLine; - } - } - } - - //FILE DATA string builder - StringBuilder stringDATA = new StringBuilder(); - //FILE CONT string builder - StringBuilder stringCONT = new StringBuilder(); - - if (listaNomiAlert.Count != 0) - { - //mostro a video l'elenco dei dipendenti che hanno l'alert. - txtArea.Text += Environment.NewLine + - "I seguenti dipendenti non hanno valorizzati i Codice dato ripartizione 4 o Codice dato ripartizione 5:" - + Environment.NewLine; - - foreach (var nomiDip in listaNomiAlert) - { - txtArea.Text += $"- {nomiDip.Replace("\"", "")}" - + Environment.NewLine; - } - } - - //list.Where(x => x.CodiceDatoRipartizione4.Contains("1")).ToList(); - if (list != null && list.Any() && erroreTrovato == 0) - { - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append($""); - - stringCONT.Append(""); - stringCONT.Append(""); - - foreach (var app in listaAppoggio) - { - //filtro la lista così ad ogni iterata avrò solo le righe della lista con codice ripartizione = a quello - //dell'elemento della listaAppoggio che sto ciclando. coì per ogni "codice" posso crearmi il suo xml - //28/03/2022 commentato perchè si deve usare codifica della ripartizione 3 come elementi di rottura. - //var listaFiltrata = list.Where(x => x.CodiceDatoRipartizione4.Equals(app.codice)).ToList(); - var listaFiltrata = list.Where(x => x.CodificaDellaRipartizione3.Equals(app.codice)).ToList(); - - if (app.numFileXml != numberXml) - { - stringDATA.Append(""); - stringDATA.Append(""); - - Thread.Sleep(1000); - dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); - - path = $@"{pathDestinazione}\d10015_52905_{dateString}_DATA.xml"; - - //scrivo file xml - File.WriteAllText(path, stringDATA.ToString()); - - //controllo se il file è stato creato. - if (File.Exists(path)) - { - txtArea.Text += Environment.NewLine - + $"File d10015_52905_{dateString}_DATA.xml creato correttamente" + - Environment.NewLine; - } - else - { - txtArea.Text += Environment.NewLine - + $"File d10015_52905_{dateString}_DATA.xml NON creato" + - Environment.NewLine; - } - - //pulisco stringbuilder - stringDATA.Clear(); - - //riapro tag del nuovo file xml DATA - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append($""); - - numberXml++; - - //FILE CONT - stringCONT.Append(""); - stringCONT.Append($"{1/*recordcount*/}"); - stringCONT.Append(""); - stringCONT.Append(""); - dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); - path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_CONT.xml"; - path = $@"{pathDestinazione}\d10015_52905_{dateString}_CONT.xml"; - - File.WriteAllText(path, stringCONT.ToString()); - - //controllo se il file è stato creato. - if (File.Exists(path)) - { - txtArea.Text += Environment.NewLine - + $"File d10015_52905_{dateString}_CONT.xml creato correttamente" + - Environment.NewLine; - } - else - { - txtArea.Text += Environment.NewLine - + $"File d10015_52905_{dateString}_CONT.xml NON creato" + - Environment.NewLine; - } - - //recordcount = 0; - - //pulisco stringbuilder - stringCONT.Clear(); - - //riapro i tag del nuovo file xml CONT - stringCONT.Append(""); - stringCONT.Append(""); - } - - //possibile soluzione - //recordcount += listaFiltrata.Count(); - - foreach (var item in listaFiltrata) - { - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append("S"); - stringDATA.Append(""); - stringDATA.Append(""); - //IN QUESTO CONTROLLO HO INVERTITO I VALORI DI S E H - //prima dell'if sostituisco la , col . per poter castare a decimale la stringa - if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0) - { - stringDATA.Append("H"); - //stringDATA.Append("S"); //13/01/2023 modificato di nuovo (rimesso com'era prima) - } - else - { - stringDATA.Append("S"); - //stringDATA.Append("H"); //13/01/2023 modificato di nuovo (rimesso com'era prima) - } - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - //var impo = item.ImportoDare.Replace(",", "."); - if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0) - { - stringDATA.Append($"{item.ImportoDare.Replace(",", ".")}"); - } - else - { - stringDATA.Append($"{item.ImportoAvere.Replace(",", ".")}"); - } - stringDATA.Append(""); - stringDATA.Append(""); - if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0) - { - stringDATA.Append($"{item.ImportoDare.Replace(",", ".")}"); - } - else - { - stringDATA.Append($"{item.ImportoAvere.Replace(",", ".")}"); - } - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - //28/03/2022 chiesto di modificare da Gastone con CodificaDellaRipartizione3(col. AJ su Excel) anzichè CodiceDatoRipartizione3 (col. AI su Excel) - //21/10/2022 chiesto da modificare da Gastone e rimettere CodiceDatoRipartizione3 (col. AI su Excel) anzichè CodificaDellaRipartizione3(col. AJ su Excel) - stringDATA.Append($"{item./*CodificaDellaRipartizione3*/CodiceDatoRipartizione3.Replace("\"","")}"); - stringDATA.Append(""); - stringDATA.Append(""); - //MF 03/10/2023 DOPO CALL CON GASTONE DECISO DI RIMETTERE CODICE CONTO E TOGLIERE CODICE CONTROPARTITA PERCHè SENò SPUTTANA S E H PER DARE E AVERE - stringDATA.Append($"{item.CodiceConto.Replace("\"", "")/*CodiceContropartita*/}"); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - stringDATA.Append(""); - } - } - - stringDATA.Append(""); - stringDATA.Append(""); - Thread.Sleep(1000); - dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); - //Thread.Sleep(1000); - path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_DATA.xml"; - path = $@"{pathDestinazione}\d10015_52905_{dateString}_DATA.xml"; - - File.WriteAllText(path, stringDATA.ToString()); - - //controllo se il file è stato creato. - if (File.Exists(path)) - { - txtArea.Text += Environment.NewLine - + $"File d10015_52905_{dateString}_DATA.xml creato correttamente" + - Environment.NewLine; - } - else - { - txtArea.Text += Environment.NewLine - + $"File d10015_52905_{dateString}_DATA.xml NON creato" + - Environment.NewLine; - } - - stringCONT.Append(""); - //30/05/2022 pare che questo sia un dato fisso a 1 - stringCONT.Append($"{1/*recordcount*/}"); - stringCONT.Append(""); - stringCONT.Append(""); - dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); - Thread.Sleep(1000); - path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_CONT.xml"; - path = $@"{pathDestinazione}\d10015_52905_{dateString}_CONT.xml"; - - File.WriteAllText(path, stringCONT.ToString()); - - //controllo se il file è stato creato. - if (File.Exists(path)) - { - txtArea.Text += Environment.NewLine - + $"File d10015_52905_{dateString}_CONT.xml creato correttamente" + - Environment.NewLine; - - txtArea.Text += Environment.NewLine - + $"Procedura terminata." - + Environment.NewLine; - } - else - { - txtArea.Text += Environment.NewLine - + $"File d10015_52905_{dateString}_CONT.xml NON creato" + - Environment.NewLine; - } - } - } - 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 L'XML ", - "CODICE AZIENDA MANCANTE", - MessageBoxButtons.OK, MessageBoxIcon.Error); - txtCodAzi.BackColor = Color.FromArgb(255, 102, 102); - } + ProduciXmlInv(codAzi); } catch (Exception ex) { @@ -1036,20 +1042,969 @@ namespace CSVToXML } } - private void txtCodAzi_Leave(object sender, EventArgs e) + #endregion + + #region DTC + + private void btnDtc_Click(object sender, EventArgs e) { - if (txtCodAzi.Text.Length == 4 && !string.IsNullOrEmpty(txtCodAzi.Text)) + try { - txtCodAzi.BackColor = Color.White; + var codAzi = "2208"; + + ProduciXml(codAzi); } - else + catch (Exception ex) { - txtCodAzi.BackColor = Color.FromArgb(255, 102, 102); + var str = MessageBox.Show($"{ex.Message}", + "File CSV non specificato", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void btnDtcInv_Click(object sender, EventArgs e) + { + try + { + var codAzi = "2208"; + + ProduciXmlInv(codAzi); + } + catch (Exception ex) + { + var str = MessageBox.Show($"{ex.Message}", + "File CSV non specificato", + MessageBoxButtons.OK, MessageBoxIcon.Error); } } #endregion - + + #region DAK + + private void btnDak_Click(object sender, EventArgs e) + { + try + { + var codAzi = "2209"; + + ProduciXml(codAzi); + } + catch (Exception ex) + { + var str = MessageBox.Show($"{ex.Message}", + "File CSV non specificato", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void btnDakInv_Click(object sender, EventArgs e) + { + try + { + var codAzi = "2209"; + + ProduciXmlInv(codAzi); + } + catch (Exception ex) + { + var str = MessageBox.Show($"{ex.Message}", + "File CSV non specificato", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + #endregion + + #region DINVEST + + private void btnDinvest_Click(object sender, EventArgs e) + { + try + { + var codAzi = "2210"; + + ProduciXml(codAzi); + } + catch (Exception ex) + { + //txtArea.Text = ex.Message; + var str = MessageBox.Show($"{ex.Message}", + "File CSV non specificato", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void btnDinvestInv_Click(object sender, EventArgs e) + { + try + { + var codAzi = "2210"; + + ProduciXmlInv(codAzi); + } + catch (Exception ex) + { + var str = MessageBox.Show($"{ex.Message}", + "File CSV non specificato", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + #endregion + + //06/12/2024 - COMMENTATI I DUE EVENTI CLICK PERCHE' ORA NON SERVONO PIU' DATO CHE SI UTILIZZANO I NUOVI BOTTONI CREATI PER LE AZIENDE + + //20/07/2022 - Aggiunto questo bottone perchè hanno bisogno di creare degli xml che abbiano nel tag i valori S e H + //invertiti rispetto agli xml che vengono generati con l'altro bottone. + //la verifica viene fatta in base ai valori del dare/avere. + + //private void btnXmlInv_Click(object sender, EventArgs e) + //{ + // try + // { + // //controllo che codice azienda sia inserito da input, senò non genero l'xml + // //la data non la controllo perchè se non la modifico prende la data di oggi + // if (txtCodAzi.Text.Length == 4 && !string.IsNullOrEmpty(txtCodAzi.Text)) + // { + // txtArea.Clear(); + // txtArea.Text = $"Premere Genera XML/XML Inv. per iniziare la procedura di conversione." + // + Environment.NewLine; + + // var list = CreaOggettiPerConversioni(); + + // var listaAppoggio = NumeroFileXMLDaProdurre(list); + // var listaXml = new List(); + // var numberXml = 1; + // var path = string.Empty; + // var pathCompleto = string.Empty; + + // //questo sarà il contenuto del tag xml + // //30/05/2022 pare che tag recordcount debba essere fisso a 1 quindi commento tutto ciò che lo riguarda + // //var recordcount = 0; + // var dateString = string.Empty; + + // //12/07/2024 - Il cliente ha chiesto un alert che non blocchi la creazione del file XML ma che mostri quali dipendenti + // //non hanno valorizzati i campi "codice dato ripartizione 4" e "codice dato ripartizione 5" dentro il csv. + // var listaNomiAlert = new List(); + // var nomeDipNoValore = string.Empty; + + // //data per gli attributi del tag E1FIKPF per i file DATA + // var dateTimePeaker = dtpAnnoMese; + // var dateBLDAT = dtpAnnoMese.Value.ToString("yyyyMMdd"); + // var dateBUDAT = dtpAnnoMese.Value.ToString("yyyyMMdd"); + // var dateXBLNRYear = dtpAnnoMese.Value.Year.ToString(); + // var dateXBLNRMonth = dtpAnnoMese.Value.Month.ToString(); + + // if (dateXBLNRMonth.Length == 1) + // { + // dateXBLNRMonth = "0" + dateXBLNRMonth; + // } + + // var dateBKTXTYear = dtpAnnoMese.Value.Year.ToString(); + // var dateBKTXTMonth = dtpAnnoMese.Value.Month.ToString(); + + // if (dateBKTXTMonth.Length == 1) + // { + // dateBKTXTMonth = "0" + dateBKTXTMonth; + // } + + // var erroreTrovato = 0; + // var msgDato = 0; + + // //Controllo che per ogni codifica della ripartizione 3 ci sia uno e uno solo codice dipendete + // foreach (var item in listaAppoggio) + // { + // //filtro la lista così ad ogni iterata avrò solo le righe della lista con codifica della ripartizione 3 = a quello + // //dell'elemento della listaAppoggio che sto ciclando. coì per ogni "codifica" posso crearmi il suo xml + + // //28/03/2022 commentato perchè si deve usare codifica della ripartizione 3 come elementi di rottura. + // //var listaFiltrata = list.Where(x => x.CodiceDatoRipartizione4.Equals(app.codice)).ToList(); + // var listaFiltrata = list.Where(x => x.CodificaDellaRipartizione3.Equals(item.codice)).ToList(); + + // //controllo che alla stessa codifica della ripartizione 3 non appartengano più codici dipendenti + // var codiceDipendente = listaFiltrata.First().CodiceDipendente; + // var listaNomiErrori = new List(); + // var nomeDipendente = string.Empty; + + // foreach (var elem in listaFiltrata) + // { + // if (elem.CodiceDatoRipartizione4.Equals("\"\"") || elem.CodiceDatoRipartizione5.Equals("\"\"")) + // { + // nomeDipNoValore = elem.CodiceDipendente + " - " + elem.Nome + " " + elem.Cognome; + // listaNomiAlert.Add(nomeDipNoValore.Replace(" ", "")); + // } + + // //if (codiceDipendente != elem.CodiceDipendente) + // if (string.IsNullOrEmpty(elem.CodiceDatoRipartizione3/*CodificaDellaRipartizione3*/)) + // { + // nomeDipendente = elem.Cognome + " " + elem.Nome; + + // var trovato = 0; + + // foreach (var nomeDip in listaNomiErrori) + // { + // var nome1 = nomeDipendente.Replace(" ", ""); + // var nome2 = nomeDip.Replace(" ", ""); + // if (nome1.Equals(nome2)) + // { + // trovato = 1; + // break; + // } + // } + + // if (trovato != 1) + // { + // listaNomiErrori.Add(nomeDipendente); + // } + + // erroreTrovato = 1; + + // //break; + // } + // } + + // if (erroreTrovato == 1) + // { + // if (msgDato == 0) + // { + // //var codifRip3 = elem.CodificaDellaRipartizione3; + // txtArea.Text += Environment.NewLine + + // "GENERAZIONE XML NON AVVENUTA."; + // txtArea.Text += Environment.NewLine + // + Environment.NewLine + // + $"Controllare le codifiche della ripartizione 3 per i seguenti dipendenti:" + // + Environment.NewLine; + + // var str = MessageBox.Show($"Non ci possono essere dipendenti con CODICE DELLA RIPARTIZIONE 3 vuoto." + + // Environment.NewLine + + // $"Correggere per poter creare l'XML", + // "IL CODICE DELLA RIPARTIZIONE 3 VUOTO.", + // MessageBoxButtons.OK, MessageBoxIcon.Error); + + // msgDato = 1; + // } + + // foreach (var nomi in listaNomiErrori) + // { + // txtArea.Text += $"- {nomi}" + // + Environment.NewLine; + // } + // } + // } + + // //FILE DATA string builder + // StringBuilder stringDATA = new StringBuilder(); + // //FILE CONT string builder + // StringBuilder stringCONT = new StringBuilder(); + + // if (listaNomiAlert.Count != 0) + // { + // //mostro a video l'elenco dei dipendenti che hanno l'alert. + // txtArea.Text += Environment.NewLine + + // "I seguenti dipendenti non hanno valorizzati i Codice dato ripartizione 4 o Codice dato ripartizione 5:" + // + Environment.NewLine; + + // foreach (var nomiDip in listaNomiAlert) + // { + // txtArea.Text += $"- {nomiDip.Replace("\"", "")}" + // + Environment.NewLine; + // } + // } + + // //list.Where(x => x.CodiceDatoRipartizione4.Contains("1")).ToList(); + // if (list != null && list.Any() && erroreTrovato == 0) + // { + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append($""); + + // stringCONT.Append(""); + // stringCONT.Append(""); + + // foreach (var app in listaAppoggio) + // { + // //filtro la lista così ad ogni iterata avrò solo le righe della lista con codice ripartizione = a quello + // //dell'elemento della listaAppoggio che sto ciclando. coì per ogni "codice" posso crearmi il suo xml + // //28/03/2022 commentato perchè si deve usare codifica della ripartizione 3 come elementi di rottura. + // //var listaFiltrata = list.Where(x => x.CodiceDatoRipartizione4.Equals(app.codice)).ToList(); + // var listaFiltrata = list.Where(x => x.CodificaDellaRipartizione3.Equals(app.codice)).ToList(); + + // if (app.numFileXml != numberXml) + // { + // stringDATA.Append(""); + // stringDATA.Append(""); + + // Thread.Sleep(1000); + // dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); + + // path = $@"{pathDestinazione}\d10015_52905_{dateString}_DATA.xml"; + + // //scrivo file xml + // File.WriteAllText(path, stringDATA.ToString()); + + // //controllo se il file è stato creato. + // if (File.Exists(path)) + // { + // txtArea.Text += Environment.NewLine + // + $"File d10015_52905_{dateString}_DATA.xml creato correttamente" + + // Environment.NewLine; + // } + // else + // { + // txtArea.Text += Environment.NewLine + // + $"File d10015_52905_{dateString}_DATA.xml NON creato" + + // Environment.NewLine; + // } + + // //pulisco stringbuilder + // stringDATA.Clear(); + + // //riapro tag del nuovo file xml DATA + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append($""); + + // numberXml++; + + // //FILE CONT + // stringCONT.Append(""); + // stringCONT.Append($"{1/*recordcount*/}"); + // stringCONT.Append(""); + // stringCONT.Append(""); + // dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); + // path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_CONT.xml"; + // path = $@"{pathDestinazione}\d10015_52905_{dateString}_CONT.xml"; + + // File.WriteAllText(path, stringCONT.ToString()); + + // //controllo se il file è stato creato. + // if (File.Exists(path)) + // { + // txtArea.Text += Environment.NewLine + // + $"File d10015_52905_{dateString}_CONT.xml creato correttamente" + + // Environment.NewLine; + // } + // else + // { + // txtArea.Text += Environment.NewLine + // + $"File d10015_52905_{dateString}_CONT.xml NON creato" + + // Environment.NewLine; + // } + + // //recordcount = 0; + + // //pulisco stringbuilder + // stringCONT.Clear(); + + // //riapro i tag del nuovo file xml CONT + // stringCONT.Append(""); + // stringCONT.Append(""); + // } + + // //possibile soluzione + // //recordcount += listaFiltrata.Count(); + + // foreach (var item in listaFiltrata) + // { + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append("S"); + // stringDATA.Append(""); + // stringDATA.Append(""); + // //IN QUESTO CONTROLLO HO INVERTITO I VALORI DI S E H + // //prima dell'if sostituisco la , col . per poter castare a decimale la stringa + // if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0) + // { + // stringDATA.Append("H"); + // //stringDATA.Append("S"); //13/01/2023 modificato di nuovo (rimesso com'era prima) + // } + // else + // { + // stringDATA.Append("S"); + // //stringDATA.Append("H"); //13/01/2023 modificato di nuovo (rimesso com'era prima) + // } + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // //var impo = item.ImportoDare.Replace(",", "."); + // if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0) + // { + // stringDATA.Append($"{item.ImportoDare.Replace(",", ".")}"); + // } + // else + // { + // stringDATA.Append($"{item.ImportoAvere.Replace(",", ".")}"); + // } + // stringDATA.Append(""); + // stringDATA.Append(""); + // if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0) + // { + // stringDATA.Append($"{item.ImportoDare.Replace(",", ".")}"); + // } + // else + // { + // stringDATA.Append($"{item.ImportoAvere.Replace(",", ".")}"); + // } + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // //28/03/2022 chiesto di modificare da Gastone con CodificaDellaRipartizione3(col. AJ su Excel) anzichè CodiceDatoRipartizione3 (col. AI su Excel) + // //21/10/2022 chiesto da modificare da Gastone e rimettere CodiceDatoRipartizione3 (col. AI su Excel) anzichè CodificaDellaRipartizione3(col. AJ su Excel) + // stringDATA.Append($"{item./*CodificaDellaRipartizione3*/CodiceDatoRipartizione3.Replace("\"","")}"); + // stringDATA.Append(""); + // stringDATA.Append(""); + // //MF 03/10/2023 DOPO CALL CON GASTONE DECISO DI RIMETTERE CODICE CONTO E TOGLIERE CODICE CONTROPARTITA PERCHè SENò SPUTTANA S E H PER DARE E AVERE + // stringDATA.Append($"{item.CodiceConto.Replace("\"", "")/*CodiceContropartita*/}"); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // } + // } + + // stringDATA.Append(""); + // stringDATA.Append(""); + // Thread.Sleep(1000); + // dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); + // //Thread.Sleep(1000); + // path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_DATA.xml"; + // path = $@"{pathDestinazione}\d10015_52905_{dateString}_DATA.xml"; + + // File.WriteAllText(path, stringDATA.ToString()); + + // //controllo se il file è stato creato. + // if (File.Exists(path)) + // { + // txtArea.Text += Environment.NewLine + // + $"File d10015_52905_{dateString}_DATA.xml creato correttamente" + + // Environment.NewLine; + // } + // else + // { + // txtArea.Text += Environment.NewLine + // + $"File d10015_52905_{dateString}_DATA.xml NON creato" + + // Environment.NewLine; + // } + + // stringCONT.Append(""); + // //30/05/2022 pare che questo sia un dato fisso a 1 + // stringCONT.Append($"{1/*recordcount*/}"); + // stringCONT.Append(""); + // stringCONT.Append(""); + // dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); + // Thread.Sleep(1000); + // path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_CONT.xml"; + // path = $@"{pathDestinazione}\d10015_52905_{dateString}_CONT.xml"; + + // File.WriteAllText(path, stringCONT.ToString()); + + // //controllo se il file è stato creato. + // if (File.Exists(path)) + // { + // txtArea.Text += Environment.NewLine + // + $"File d10015_52905_{dateString}_CONT.xml creato correttamente" + + // Environment.NewLine; + + // txtArea.Text += Environment.NewLine + // + $"Procedura terminata." + // + Environment.NewLine; + // } + // else + // { + // txtArea.Text += Environment.NewLine + // + $"File d10015_52905_{dateString}_CONT.xml NON creato" + + // Environment.NewLine; + // } + // } + // } + // 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 L'XML ", + // "CODICE AZIENDA MANCANTE", + // MessageBoxButtons.OK, MessageBoxIcon.Error); + // txtCodAzi.BackColor = Color.FromArgb(255, 102, 102); + // } + // } + // catch (Exception ex) + // { + // var str = MessageBox.Show($"{ex.Message}", + // "File CSV non specificato", + // MessageBoxButtons.OK, MessageBoxIcon.Error); + // } + //} + + //private void btnConverti_Click(object sender, EventArgs e) + //{ + // try + // { + // //controllo che codice azienda sia inserito da input, senò non genero l'xml + // //la data non la controllo perchè se non la modifico prende la data di oggi + // if (txtCodAzi.Text.Length == 4 && !string.IsNullOrEmpty(txtCodAzi.Text)) + // { + // txtArea.Clear(); + + // txtArea.Text = $"Premere Genera XML/XML Inv. per iniziare la procedura di conversione." + // + Environment.NewLine; + + // var list = CreaOggettiPerConversioni(); + + // var listaAppoggio = NumeroFileXMLDaProdurre(list); + // var listaXml = new List(); + // var numberXml = 1; + // var path = string.Empty; + // var pathCompleto = string.Empty; + // //questo sarà il contenuto del tag xml + // //30/05/2022 pare che tag recordcount debba essere fisso a 1 quindi commento tutto ciò che lo riguarda + // //var recordcount = 0; + // var dateString = string.Empty; + + // //12/07/2024 - Il cliente ha chiesto un alert che non blocchi la creazione del file XML ma che mostri quali dipendenti + // //non hanno valorizzati i campi "codice dato ripartizione 4" e "codice dato ripartizione 5" dentro il csv. + // var listaNomiAlert = new List(); + // var nomeDipNoValore = string.Empty; + + // //data per gli attributi del tag E1FIKPF per i file DATA + // var dateTimePeaker = dtpAnnoMese; + // var dateBLDAT = dtpAnnoMese.Value.ToString("yyyyMMdd"); + // var dateBUDAT = dtpAnnoMese.Value.ToString("yyyyMMdd"); + // var dateXBLNRYear = dtpAnnoMese.Value.Year.ToString(); + // var dateXBLNRMonth = dtpAnnoMese.Value.Month.ToString(); + + // if (dateXBLNRMonth.Length == 1) + // { + // dateXBLNRMonth = "0" + dateXBLNRMonth; + // } + + // var dateBKTXTYear = dtpAnnoMese.Value.Year.ToString(); + // var dateBKTXTMonth = dtpAnnoMese.Value.Month.ToString(); + + // if (dateBKTXTMonth.Length == 1) + // { + // dateBKTXTMonth = "0" + dateBKTXTMonth; + // } + + // var erroreTrovato = 0; + // var msgDato = 0; + + // //Controllo che per ogni codifica della ripartizione 3 ci sia uno e uno solo codice dipendete + // foreach (var item in listaAppoggio) + // { + // //filtro la lista così ad ogni iterata avrò solo le righe della lista con codifica della ripartizione 3 = a quello + // //dell'elemento della listaAppoggio che sto ciclando. coì per ogni "codifica" posso crearmi il suo xml + + // //28/03/2022 commentato perchè si deve usare codifica della ripartizione 3 come elementi di rottura. + // //var listaFiltrata = list.Where(x => x.CodiceDatoRipartizione4.Equals(app.codice)).ToList(); + // var listaFiltrata = list.Where(x => x.CodificaDellaRipartizione3.Equals(item.codice)).ToList(); + + // //controllo che alla stessa codifica della ripartizione 3 non appartengano più codici dipendenti + // var codiceDipendente = listaFiltrata.First().CodiceDipendente; + // var listaNomiErrori = new List(); + // var nomeDipendente = string.Empty; + + // foreach (var elem in listaFiltrata) + // { + // if (elem.CodiceDatoRipartizione4.Equals("\"\"") || elem.CodiceDatoRipartizione5.Equals("\"\"")) + // { + // nomeDipNoValore = elem.CodiceDipendente + " - " + elem.Nome + " " + elem.Cognome; + // listaNomiAlert.Add(nomeDipNoValore); + // } + + // //if (codiceDipendente != elem.CodiceDipendente) + // if (string.IsNullOrEmpty(elem.CodiceDatoRipartizione3/*CodificaDellaRipartizione3*/)) + // { + // nomeDipendente = elem.Cognome + " " + elem.Nome; + + // var trovato = 0; + + // foreach (var nomeDip in listaNomiErrori) + // { + // var nome1 = nomeDipendente.Replace(" ", ""); + // var nome2 = nomeDip.Replace(" ", ""); + // if (nome1.Equals(nome2)) + // { + // trovato = 1; + // break; + // } + // } + + // if (trovato != 1) + // { + // listaNomiErrori.Add(nomeDipendente); + // } + + // erroreTrovato = 1; + // } + // } + + // if (erroreTrovato == 1) + // { + // if (msgDato == 0) + // { + // //var codifRip3 = elem.CodificaDellaRipartizione3; + // txtArea.Text += Environment.NewLine + + // "GENERAZIONE XML NON AVVENUTA."; + // txtArea.Text += Environment.NewLine + // + Environment.NewLine + // + $"Controllare le codifiche della ripartizione 3 per i seguenti dipendenti:" + // + Environment.NewLine; + + // var str = MessageBox.Show($"Non ci possono essere dipendenti con CODICE DELLA RIPARTIZIONE 3 vuoto." + + // Environment.NewLine + + // $"Correggere per poter creare l'XML", + // "IL CODICE DELLA RIPARTIZIONE 3 VUOTO.", + // MessageBoxButtons.OK, MessageBoxIcon.Error); + + // msgDato = 1; + // } + + // foreach (var nomi in listaNomiErrori) + // { + // txtArea.Text += $"- {nomi}" + // + Environment.NewLine; + // } + // } + // } + + // //FILE DATA string builder + // StringBuilder stringDATA = new StringBuilder(); + // //FILE CONT string builder + // StringBuilder stringCONT = new StringBuilder(); + + // if (listaNomiAlert.Count != 0) + // { + // //mostro a video l'elenco dei dipendenti che hanno l'alert. + // txtArea.Text += Environment.NewLine + + // "I seguenti dipendenti non hanno valorizzati i Codice dato ripartizione 4 o Codice dato ripartizione 5:" + // + Environment.NewLine; + + // foreach (var nomiDip in listaNomiAlert) + // { + // txtArea.Text += $"- {nomiDip.Replace("\"", "")}" + // + Environment.NewLine; + // } + // } + + // //list.Where(x => x.CodiceDatoRipartizione4.Contains("1")).ToList(); + // if (list != null && list.Any() && erroreTrovato == 0) + // { + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append($""); + + // stringCONT.Append(""); + // stringCONT.Append(""); + + // foreach (var app in listaAppoggio) + // { + // //filtro la lista così ad ogni iterata avrò solo le righe della lista con codice ripartizione uguale a quello + // //dell'elemento della listaAppoggio che sto ciclando. così per ogni "codice" posso crearmi il suo xml + + // //28/03/2022 commentato perchè si deve usare codifica della ripartizione 3 come elementi di rottura. + // //var listaFiltrata = list.Where(x => x.CodiceDatoRipartizione4.Equals(app.codice)).ToList(); + + // var listaFiltrata = list.Where(x => x.CodificaDellaRipartizione3.Equals(app.codice)).ToList(); + + // if (app.numFileXml != numberXml) + // { + // //txtArea.Text += Environment.NewLine + // //+ $"Finito {numberXml}"; + + // stringDATA.Append(""); + // stringDATA.Append(""); + + // Thread.Sleep(1000); + // dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); + + // //Thread.Sleep(1000); + + // //path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_DATA.xml"; + // path = $@"{pathDestinazione}\d10015_52905_{dateString}_DATA.xml"; + // //path = $@"C:\Users\miche\Desktop\FileXML\d10015_52905_{dateString}_DATA.xml"; + + // //scrivo file xml + // File.WriteAllText(path, stringDATA.ToString()); + + // //controllo se il file è stato creato. + // if (File.Exists(path)) + // { + // txtArea.Text += Environment.NewLine + // + $"File d10015_52905_{dateString}_DATA.xml creato correttamente" + + // Environment.NewLine; + // } + // else + // { + // txtArea.Text += Environment.NewLine + // + $"File d10015_52905_{dateString}_DATA.xml NON creato" + + // Environment.NewLine; + // } + + // //pulisco stringbuilder + // stringDATA.Clear(); + + // //riapro tag del nuovo file xml DATA + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append($""); + + // //txtArea.Text += Environment.NewLine + // //+ $"Finito {numberXml}"; + // numberXml++; + + // //FILE CONT + // stringCONT.Append(""); + // stringCONT.Append($"{1/*recordcount*/}"); + // stringCONT.Append(""); + // stringCONT.Append(""); + // dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); + // path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_CONT.xml"; + // path = $@"{pathDestinazione}\d10015_52905_{dateString}_CONT.xml"; + // //path = $@"C:\Users\miche\Desktop\FileXML\d10015_52905_{dateString}_CONT.xml"; + + // File.WriteAllText(path, stringCONT.ToString()); + + // //controllo se il file è stato creato. + // if (File.Exists(path)) + // { + // txtArea.Text += Environment.NewLine + // + $"File d10015_52905_{dateString}_CONT.xml creato correttamente" + + // Environment.NewLine; + // } + // else + // { + // txtArea.Text += Environment.NewLine + // + $"File d10015_52905_{dateString}_CONT.xml NON creato" + + // Environment.NewLine; + // } + + // //recordcount = 0; + + // //pulisco stringbuilder + // stringCONT.Clear(); + + // //riapro i tag del nuovo file xml CONT + // stringCONT.Append(""); + // stringCONT.Append(""); + // } + + // //possibile soluzione + // //recordcount += listaFiltrata.Count(); + + // foreach (var item in listaFiltrata) + // { + // //UTILIZZATO SOLO PER VEDERE CHE DATO RIPARTIZIONE FOSSE (NON SERVE) + // //myStringbuilder.Append(""); + // //myStringbuilder.Append($"{app.codice}"); + // //myStringbuilder.Append(""); + + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append("S"); + // stringDATA.Append(""); + // stringDATA.Append(""); + // //prima dell'if sostituisco la , col . per poter castare a decimale la stringa + // if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0) + // { + // //13/01/2023 MODIFICATO + // //stringDATA.Append("H"); + // stringDATA.Append("S"); + // } + // else + // { + // //13/01/2023 MODIFICATO + // //stringDATA.Append("S"); + // stringDATA.Append("H"); + + // } + + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // //var impo = item.ImportoDare.Replace(",", "."); + + // if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0) + // { + // stringDATA.Append($"{item.ImportoDare.Replace(",", ".")}"); + // } + // else + // { + // stringDATA.Append($"{item.ImportoAvere.Replace(",", ".")}"); + // } + + // stringDATA.Append(""); + // stringDATA.Append(""); + + // if (Convert.ToDecimal(item.ImportoDare.Replace(",", ".")) > 0) + // { + // stringDATA.Append($"{item.ImportoDare.Replace(",", ".")}"); + // } + // else + // { + // stringDATA.Append($"{item.ImportoAvere.Replace(",", ".")}"); + // } + + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // //28/03/2022 chiesto di modificare da Gastone con CodificaDellaRipartizione3(col. AJ su Excel) anzichè CodiceDatoRipartizione3 (col. AI su Excel) + // //21/10/2022 chiesto da modificare da Gastone e rimettere CodiceDatoRipartizione3 (col. AI su Excel) anzichè CodificaDellaRipartizione3(col. AJ su Excel) + // stringDATA.Append($"{item./*CodificaDellaRipartizione3*/CodiceDatoRipartizione3.Replace("\"", "")}"); + // stringDATA.Append(""); + // stringDATA.Append(""); + // //MF 03/10/2023 DOPO CALL CON GASTONE DECISO DI RIMETTERE CODICE CONTO E TOGLIERE CODICE CONTROPARTITA PERCHè SENò SPUTTANA S E H PER DARE E AVERE + // //MF 29/07/2024 COMMENTATA PERCHEè USA LA RIGA SOTTO + // //stringDATA.Append($"{item.CodiceConto/*CodiceContropartita*/}"); + // //MF 29/07/2024 MESSO REPLACE PERCHè LA STRUTTURA CSV NEL CAMPO CONTO COMPARE COME \" + // stringDATA.Append($"{item.CodiceConto.Replace("\"", "")/*CodiceContropartita*/}"); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // stringDATA.Append(""); + // } + // } + + // stringDATA.Append(""); + // stringDATA.Append(""); + // Thread.Sleep(1000); + // dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); + // path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_DATA.xml"; + // path = $@"{pathDestinazione}\d10015_52905_{dateString}_DATA.xml"; + + // File.WriteAllText(path, stringDATA.ToString()); + + // //controllo se il file è stato creato. + // if (File.Exists(path)) + // { + // txtArea.Text += Environment.NewLine + // + $"File d10015_52905_{dateString}_DATA.xml creato correttamente" + + // Environment.NewLine; + // } + // else + // { + // txtArea.Text += Environment.NewLine + // + $"File d10015_52905_{dateString}_DATA.xml NON creato" + + // Environment.NewLine; + // } + + // stringCONT.Append(""); + // //30/05/2022 pare che questo sia un dato fisso a 1 + // stringCONT.Append($"{1/*recordcount*/}"); + // stringCONT.Append(""); + // stringCONT.Append(""); + // dateString = DateTime.Now.ToString("yyyyMMddHHmmss"); + // //path = $@"C:\ProgettiVisualStudio\OutputXML\filexml_{numberXml}.xml"; + // Thread.Sleep(1000); + // path = $@"C:\ProgettiVisualStudio\OutputXML\d10015_52905_{dateString}_CONT.xml"; + // path = $@"{pathDestinazione}\d10015_52905_{dateString}_CONT.xml"; + // //path = $@"C:\Users\miche\Desktop\FileXML\d10015_52905_{dateString}_CONT.xml"; + + // File.WriteAllText(path, stringCONT.ToString()); + + // //controllo se il file è stato creato. + // if (File.Exists(path)) + // { + // txtArea.Text += Environment.NewLine + // + $"File d10015_52905_{dateString}_CONT.xml creato correttamente" + + // Environment.NewLine; + + // txtArea.Text += Environment.NewLine + // + $"Procedura terminata." + // + Environment.NewLine; + // } + // else + // { + // txtArea.Text += Environment.NewLine + // + $"File d10015_52905_{dateString}_CONT.xml NON creato" + + // Environment.NewLine; + // } + // } + // } + // 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 L'XML ", + // "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 txtCodAzi_Leave(object sender, EventArgs e) + //{ + // if (txtCodAzi.Text.Length == 4 && !string.IsNullOrEmpty(txtCodAzi.Text)) + // { + // txtCodAzi.BackColor = Color.White; + // } + // else + // { + // txtCodAzi.BackColor = Color.FromArgb(255, 102, 102); + // } + //} + + #endregion } #region CLASSI