Просмотр исходного кода

- Neuer Mandant: Renault
- Config speichern, wenn log-Datei fehlt
- Mandanten: Kontonummer in allen Export-Dateien einheitlich
- config: StatImport deaktivieren

Robert Bedner 11 лет назад
Родитель
Сommit
4552547c24

+ 9 - 1
Control/Logger.cs

@@ -1,10 +1,15 @@
 using System.IO;
+using System.Text.RegularExpressions;
 
 namespace GCHR.Control
 {
     public class Logger
     {
-        private const string LogDatei = "logs\\gchr.log";
+        public static string ConfigDatei = "config\\gchr.xml";
+        public static string LogDatei
+        {
+            get { return "logs\\" + Regex.Match(ConfigDatei, @"\w*\.xml$") + ".log"; }
+        }
         public static string ExportLog = LogDatei;
 
         public static void Info(string message)
@@ -30,5 +35,8 @@ namespace GCHR.Control
                 sw.WriteLine(message);
             }
         }
+
+        public static bool DateiExistiert { get { return File.Exists(LogDatei); } 
+        }
     }
 }

+ 4 - 5
Control/Tasks/Datenimport.cs

@@ -15,14 +15,12 @@ namespace GCHR.Control.Tasks
     {
         public static Datenimport DatenimportSuSa(int id, string name)
         {
-            var datenimport = new Datenimport(id, name) {_kontoTyp = KontoTypen.SuSa};
-            return datenimport;
+            return new Datenimport(id, name) {_kontoTyp = KontoTypen.SuSa};
         }
 
         public static Datenimport DatenimportStat(int id, string name)
         {
-            var datenimport = new Datenimport(id, name) {_kontoTyp = KontoTypen.Stat};
-            return datenimport;
+            return new Datenimport(id, name) {_kontoTyp = KontoTypen.Stat};
         }
 
         private Datenimport(int id, string name)
@@ -40,6 +38,7 @@ namespace GCHR.Control.Tasks
 
         protected override void AufgabeAusfuehren()
         {
+            if (_kontoTyp == KontoTypen.Stat && !Config.StatKontenImportieren) return;
             var import = Importieren();
             Data.AddKonten(ImportInKontenUmwandeln(import));
         }
@@ -146,7 +145,7 @@ namespace GCHR.Control.Tasks
             if (summe != 0.0m)
             {
                 ReportProgress(75, "Beim Import der SuSa-Konten trat ein Fehler auf." + Environment.NewLine +
-                                          "Die Summe über alle SuSa-Konten ist " + summeString + " €");
+                                          "Die Summe über alle SuSa-Konten ist " + summeString);
             }
         }
 

+ 3 - 0
Control/Tasks/Export.cs

@@ -19,6 +19,7 @@ namespace GCHR.Control.Tasks
             : base(id, name) 
         {
             _mandant = MandantRegistrieren();
+            HaendlerKonto.Mandant = _mandant;
             _debugExportFile = Periode.AktuellePeriode.ProtokollDatei;
         }
 
@@ -42,6 +43,8 @@ namespace GCHR.Control.Tasks
                     return new Opel();
                 case Mandanten.Peugeot:
                     return new Peugeot();
+                case Mandanten.Renault:
+                    return new Renault();
                 case Mandanten.Volkswagen:
                     return new Volkswagen();
                 case Mandanten.Volvo:

+ 1 - 1
Control/Tasks/TaskManager.cs

@@ -58,7 +58,7 @@ namespace GCHR.Control.Tasks
 
                 if (!weitereAufgabe)
                 {
-                    _config.Speichern();
+                    _config.ManuelleKontenSpeichern();
                 }
             }
             else

+ 2 - 2
Control/Tasks/Verarbeitung.cs

@@ -26,8 +26,8 @@ namespace GCHR.Control.Tasks
         private readonly Dictionary<string, string> _nichtZugeordnet = new Dictionary<string, string>();
         private readonly Dictionary<string, string> _nichtImKontenrahmen = new Dictionary<string, string>();
 
-        private readonly HaendlerKonto _debugKontoKontenrahmen = new HaendlerKonto(KontoTypen.Debug) { Kontonummer = "_1", Bezeichnung = "nicht im Kontenrahmen" };
-        private readonly HaendlerKonto _debugKontoUebersetzung = new HaendlerKonto(KontoTypen.Debug) { Kontonummer = "_2", Bezeichnung = "Uebersetzung fehlt" };
+        private readonly HaendlerKonto _debugKontoKontenrahmen = new HaendlerKonto(KontoTypen.Debug) { Kontonummer = "00000000_1", Bezeichnung = "nicht im Kontenrahmen" };
+        private readonly HaendlerKonto _debugKontoUebersetzung = new HaendlerKonto(KontoTypen.Debug) { Kontonummer = "00000000_2", Bezeichnung = "Uebersetzung fehlt" };
 
 
         private List<HaendlerKonto> KontenrahmenUebersetzen(IEnumerable<HaendlerKonto> kontenimport)

+ 10 - 5
Mandantenschnittstelle/Citroen.cs

@@ -41,11 +41,11 @@ namespace GCHR.Mandantenschnittstelle
             }
         }
 
-        public string BalanceBody(HaendlerKonto kto)
+        public string BalanceBody(HaendlerKonto konto)
         {
-            return ("02" + kto +
-                        Regex.Replace(String.Format("{0:0.00+;0.00+;0.00+}", kto.Soll), ",", "").PadLeft(13, '0') +
-                        Regex.Replace(String.Format("{0:0.00+;0.00+;0.00+}", kto.Haben), ",", "").PadLeft(13, '0') +
+            return ("02" + KontonummerFormatieren(konto) +
+                        Regex.Replace(String.Format("{0:0.00+;0.00+;0.00+}", konto.Soll), ",", "").PadLeft(13, '0') +
+                        Regex.Replace(String.Format("{0:0.00+;0.00+;0.00+}", konto.Haben), ",", "").PadLeft(13, '0') +
                         "000000000000+" + "000000000000+");
         }
 
@@ -65,7 +65,12 @@ namespace GCHR.Mandantenschnittstelle
             }
         }
 
-        public string AccountsBody(HaendlerKonto kto)
+        public string KontonummerFormatieren(HaendlerKonto konto)
+        {
+            return konto.Marke + konto.Betrieb + konto.Kontonummer;
+        }
+
+        public string AccountsBody(HaendlerKonto konto)
         {
             return String.Empty;
         }

+ 9 - 7
Mandantenschnittstelle/Fiat.cs

@@ -4,9 +4,6 @@ using GCHR.Model.Konto;
 
 namespace GCHR.Mandantenschnittstelle
 {
-    /**
-     * <summary>Im Vergleich zu Opel wird bei Fiat im BalanceHeader das "M" weggelassen und die Salden mit Komma getrennt.</summary>
-     */
     class Fiat : IMandant
     {
         private readonly Konfiguration _config = Konfiguration.GetInstance();
@@ -43,9 +40,9 @@ namespace GCHR.Mandantenschnittstelle
             }
         }
 
-        public string BalanceBody(HaendlerKonto kto)
+        public string BalanceBody(HaendlerKonto konto)
         {
-            return (kto + String.Format("{0,30:0.00}", (kto.Summe)));
+            return KontonummerFormatieren(konto).PadRight(20, ' ') + String.Format("{0,18:0.00}", konto.Summe);
         }
 
         public string AccountsHeader
@@ -64,9 +61,14 @@ namespace GCHR.Mandantenschnittstelle
             }
         }
 
-        public string AccountsBody(HaendlerKonto kto)
+        public string KontonummerFormatieren(HaendlerKonto konto)
         {
-            return (kto.ToString().PadRight(42, ' ') + kto.Bezeichnung);
+            return konto.Marke + konto.Betrieb + konto.Kontonummer;
+        }
+
+        public string AccountsBody(HaendlerKonto konto)
+        {
+            return KontonummerFormatieren(konto).PadRight(42, ' ') + konto.Bezeichnung;
         }
     }
 }

+ 9 - 4
Mandantenschnittstelle/Ford.cs

@@ -7,14 +7,14 @@ namespace GCHR.Mandantenschnittstelle
 {
     class Ford : IMandant
     {
-        public string BalanceBody(HaendlerKonto kto)
+        public string BalanceBody(HaendlerKonto konto)
         {
-            return (kto.Kontonummer + String.Format("{0,30:0.00}", (kto.Summe)).Replace(',', '.'));
+            return KontonummerFormatieren(konto).PadRight(20, ' ') + String.Format("{0,18:0.00}", (konto.Summe)).Replace(',', '.');
         }
 
-        public string AccountsBody(HaendlerKonto kto)
+        public string AccountsBody(HaendlerKonto konto)
         {
-            return (kto.Kontonummer.PadRight(42, ' ') + kto.Bezeichnung);
+            return KontonummerFormatieren(konto).PadRight(42, ' ') + konto.Bezeichnung;
         }
 
 
@@ -70,5 +70,10 @@ namespace GCHR.Mandantenschnittstelle
             }
 
         }
+
+        public string KontonummerFormatieren(HaendlerKonto konto)
+        {
+            return konto.Kontonummer;
+        }
     }
 }

+ 8 - 8
Mandantenschnittstelle/Honda.cs

@@ -48,14 +48,9 @@ namespace GCHR.Mandantenschnittstelle
 
         }
 
-        public string BalanceBody(HaendlerKonto kto)
+        public string BalanceBody(HaendlerKonto konto)
         {
-            return (string.Format("{0};{1};{2};{3}", Kontonummer(kto), kto.Bezeichnung, kto.SummeAktuellePeriode, kto.Summe).Replace(',', '.'));
-        }
-
-        private static string Kontonummer(HaendlerKonto kto)
-        {
-            return kto.Kontonummer.Substring(0, 4) + kto.Marke + kto.Betrieb + kto.Kontonummer.Substring(4);
+            return (string.Format("{0};{1};{2};{3}", KontonummerFormatieren(konto), konto.Bezeichnung, konto.SummeAktuellePeriode, konto.Summe).Replace(',', '.'));
         }
 
         public string AccountsHeader
@@ -75,7 +70,12 @@ namespace GCHR.Mandantenschnittstelle
 
         }
 
-        public string AccountsBody(HaendlerKonto kto)
+        public string KontonummerFormatieren(HaendlerKonto konto)
+        {
+            return konto.Kontonummer.Substring(0, 4) + konto.Marke + konto.Betrieb + konto.Kontonummer.Substring(4);
+        }
+
+        public string AccountsBody(HaendlerKonto konto)
         {
             return string.Empty;
         }

+ 2 - 0
Mandantenschnittstelle/IMandant.cs

@@ -38,5 +38,7 @@ namespace GCHR.Mandantenschnittstelle
         /// Fußzeile von AccountsDatei
         /// </summary>
         string AccountsFooter { get; }
+
+        string KontonummerFormatieren(HaendlerKonto konto);
     }
 }

+ 1 - 1
Mandantenschnittstelle/Mandanten.cs

@@ -1,4 +1,4 @@
 namespace GCHR.Mandantenschnittstelle
 {
-    public enum Mandanten { Citroen, Fiat, Ford, Honda, Opel, Peugeot, Volkswagen, Volvo };
+    public enum Mandanten { Citroen, Fiat, Ford, Honda, Opel, Peugeot, Renault, Volkswagen, Volvo };
 }

+ 9 - 4
Mandantenschnittstelle/Opel.cs

@@ -41,9 +41,9 @@ namespace GCHR.Mandantenschnittstelle
 
         }
 
-        public string BalanceBody(HaendlerKonto kto)
+        public string BalanceBody(HaendlerKonto konto)
         {
-            return (kto + String.Format("{0,30:0.00}", (kto.Summe)).Replace(',', '.'));
+            return (KontonummerFormatieren(konto).PadRight(20, ' ') + String.Format("{0,18:0.00}", (konto.Summe)).Replace(',', '.'));
         }
 
 
@@ -55,6 +55,11 @@ namespace GCHR.Mandantenschnittstelle
             }
         }
 
+        public string AccountsBody(HaendlerKonto konto)
+        {
+            return KontonummerFormatieren(konto).PadRight(42, ' ') + konto.Bezeichnung;
+        }
+
         public string AccountsFooter
         {
             get
@@ -64,9 +69,9 @@ namespace GCHR.Mandantenschnittstelle
 
         }
 
-        public string AccountsBody(HaendlerKonto kto)
+        public string KontonummerFormatieren(HaendlerKonto konto)
         {
-            return (kto.ToString().PadRight(42, ' ') + kto.Bezeichnung);
+            return konto.Marke + konto.Betrieb + konto.Kontonummer;
         }
     }
 }

+ 11 - 6
Mandantenschnittstelle/Peugeot.cs

@@ -41,11 +41,11 @@ namespace GCHR.Mandantenschnittstelle
             }
         }
 
-        public string BalanceBody(HaendlerKonto kto)
+        public string BalanceBody(HaendlerKonto konto)
         {
-            return ("02" + kto +
-                            Regex.Replace(String.Format("{0:0.00+;0.00+;0.00+}", kto.Soll), ",", "").PadLeft(13, '0') +
-                            Regex.Replace(String.Format("{0:0.00+;0.00+;0.00+}", kto.Haben), ",", "").PadLeft(13, '0') +
+            return ("02" + KontonummerFormatieren(konto) +
+                            Regex.Replace(String.Format("{0:0.00+;0.00+;0.00+}", konto.Soll), ",", "").PadLeft(13, '0') +
+                            Regex.Replace(String.Format("{0:0.00+;0.00+;0.00+}", konto.Haben), ",", "").PadLeft(13, '0') +
                             "000000000000+" + "000000000000+");
         }
 
@@ -57,6 +57,11 @@ namespace GCHR.Mandantenschnittstelle
             }
         }
 
+        public string AccountsBody(HaendlerKonto konto)
+        {
+            return String.Empty;
+        }
+
         public string AccountsFooter
         {
             get
@@ -65,9 +70,9 @@ namespace GCHR.Mandantenschnittstelle
             }
         }
 
-        public string AccountsBody(HaendlerKonto kto)
+        public string KontonummerFormatieren(HaendlerKonto konto)
         {
-            return String.Empty;
+            return konto.Marke + konto.Betrieb + konto.Kontonummer;
         }
     }
 }

+ 7 - 0
Mandantenschnittstelle/Renault.cs

@@ -0,0 +1,7 @@
+
+namespace GCHR.Mandantenschnittstelle
+{
+    class Renault : Opel
+    {
+    }
+}

+ 8 - 2
Mandantenschnittstelle/Test.cs

@@ -42,6 +42,7 @@ namespace GCHR.Mandantenschnittstelle
             return String.Empty;
         }
 
+
         public string AccountsHeader
         {
             get
@@ -50,6 +51,11 @@ namespace GCHR.Mandantenschnittstelle
             }
         }
 
+        public string AccountsBody(HaendlerKonto kto)
+        {
+            return String.Empty;
+        }
+
         public string AccountsFooter
         {
             get
@@ -58,9 +64,9 @@ namespace GCHR.Mandantenschnittstelle
             }
         }
 
-        public string AccountsBody(HaendlerKonto kto)
+        public string KontonummerFormatieren(HaendlerKonto konto)
         {
-            return String.Empty;
+            return konto.Marke + konto.Betrieb + konto.Kontonummer;
         }
     }
 }

+ 26 - 25
Mandantenschnittstelle/Volkswagen.cs

@@ -111,45 +111,41 @@ namespace GCHR.Mandantenschnittstelle
             }
         }
 
-        public string BalanceBody(HaendlerKonto kto)
+        public string BalanceBody(HaendlerKonto konto)
         {
             _accounts.Add(new XElement(Tns + "Account",
                          new XElement(Tns + "ProfitCenter", "00"),
                          new XElement(Tns + "AccountKey", 
-                              AccountKey(kto)
+                              KontonummerFormatieren(konto)
                               // accountAttributes(kto)
                          ),
-                         new XElement(Tns + "AccountValue", AccountValue(kto))
+                         new XElement(Tns + "AccountValue", AccountValue(konto))
             ));
             return String.Empty;
         }
 
-        private string AccountKey(HaendlerKonto kto)
-        {
-            return String.Join("", AccountKeyDict(kto).Values.ToArray());
-        }
-
-        private object[] AccountAttributes(HaendlerKonto kto)
+        private XAttribute[] AccountAttributes(HaendlerKonto kto)
         {
             return (from attrib in AccountKeyDict(kto)
                     select new XAttribute(attrib.Key, attrib.Value)).ToArray();
         }
 
-        private static Dictionary<string, string> AccountKeyDict(HaendlerKonto kto)
+        private static Dictionary<string, string> AccountKeyDict(HaendlerKonto konto)
         {
-            var marke = kto.Marke.PadRight(6, '?');
-            var kontonummer = kto.Kontonummer.PadRight(10, '?');
-
-            var dict = new Dictionary<string, string>();
-            dict.Add("Brand", marke.Substring(0,2));
-            dict.Add("ModelCode", marke.Substring(2));
-            dict.Add("Account", kontonummer.Substring(0,4));
-            dict.Add("CostCentre", kontonummer.Substring(4, 2));
-            dict.Add("TradeChannel", kontonummer.Substring(6, 2));
-            dict.Add("CostUnit", kontonummer.Substring(8, 2));
-            dict.Add("Location", kto.Betrieb);
-            dict.Add("TaxCode", "000");
-            return dict;
+            var marke = konto.Marke.PadRight(6, '?');
+            var kontonummer = konto.Kontonummer.PadRight(10, '?');
+
+            return new Dictionary<string, string>
+                {
+                    {"Brand", marke.Substring(0, 2)},
+                    {"ModelCode", marke.Substring(2)},
+                    {"Account", kontonummer.Substring(0, 4)},
+                    {"CostCentre", kontonummer.Substring(4, 2)},
+                    {"TradeChannel", kontonummer.Substring(6, 2)},
+                    {"CostUnit", kontonummer.Substring(8, 2)},
+                    {"Location", konto.Betrieb},
+                    {"TaxCode", "000"}
+                };
         }
 
         private static string AccountValue(HaendlerKonto kto)
@@ -171,6 +167,11 @@ namespace GCHR.Mandantenschnittstelle
             }
         }
 
+        public string AccountsBody(HaendlerKonto kto)
+        {
+            return String.Empty;
+        }
+
         public string AccountsFooter
         {
             get
@@ -179,9 +180,9 @@ namespace GCHR.Mandantenschnittstelle
             }
         }
 
-        public string AccountsBody(HaendlerKonto kto)
+        public string KontonummerFormatieren(HaendlerKonto konto)
         {
-            return String.Empty;
+            return String.Join("", AccountKeyDict(konto).Values.ToArray());
         }
     }
 }

+ 9 - 4
Mandantenschnittstelle/Volvo.cs

@@ -41,9 +41,9 @@ namespace GCHR.Mandantenschnittstelle
 
         }
 
-        public string BalanceBody(HaendlerKonto kto)
+        public string BalanceBody(HaendlerKonto konto)
         {
-            return (kto + String.Format("{0,33:0.00}", (kto.Summe)).Replace(',', '.'));
+            return (KontonummerFormatieren(konto).PadRight(23, ' ') + String.Format("{0,18:0.00}", (konto.Summe)).Replace(',', '.'));
         }
 
 
@@ -54,6 +54,11 @@ namespace GCHR.Mandantenschnittstelle
                 return "Account Code".PadRight(42, ' ') + "Description";
             }
         }
+        
+        public string AccountsBody(HaendlerKonto konto)
+        {
+            return (KontonummerFormatieren(konto).PadRight(42, ' ') + konto.Bezeichnung);
+        }
 
         public string AccountsFooter
         {
@@ -64,9 +69,9 @@ namespace GCHR.Mandantenschnittstelle
 
         }
 
-        public string AccountsBody(HaendlerKonto kto)
+        public string KontonummerFormatieren(HaendlerKonto konto)
         {
-            return (kto.ToString().PadRight(42, ' ') + kto.Bezeichnung);
+            return konto.Marke + konto.Betrieb + konto.Kontonummer;
         }
     }
 }

+ 0 - 2
Model/Constants.cs

@@ -61,6 +61,4 @@ namespace GCHR.Model
         public Ampelstatus Ampelstatus;
         public string Message;
     }
-
-
 }

+ 3 - 1
Model/GchrConfig.cs

@@ -110,9 +110,11 @@ namespace GCHR.Model
 
         public bool KontoOhneUebersetzungUebernehmen;
 
+        public bool StatImport = true;
+
         public UpdateXml Update;
         public SteuerungsdateienXml Steuerungsdateien;
-        public string Verrechnungskonten;
+
         private string _geschaeftsjahr;
 
         public EinstellungenXml()

+ 10 - 0
Model/Konfiguration.cs

@@ -43,6 +43,11 @@ namespace GCHR.Model
             KontenXmlUmsortieren();
             Periode.Dateipfade = _gchrConfig.Dateipfade;
             Periode.ErsterMonatImGeschaeftsjahr = _gchrConfig.Einstellungen.Geschaeftsjahr;
+            Logger.ConfigDatei = cfgDatei;
+            if (!Logger.DateiExistiert)
+            {
+                Speichern();
+            }
         }
 
         private void KontenXmlUmsortieren()
@@ -333,5 +338,10 @@ namespace GCHR.Model
         {
             get { return (!string.IsNullOrEmpty(_gchrConfig.Webservice)); }
         }
+
+        public bool StatKontenImportieren
+        {
+            get { return _gchrConfig.Einstellungen.StatImport; }
+        }
     }
 }

+ 11 - 3
Model/Konto/HaendlerKonto.cs

@@ -2,6 +2,7 @@
 using System.Collections.Generic;
 using System.Linq;
 using System.Xml.Serialization;
+using GCHR.Mandantenschnittstelle;
 
 namespace GCHR.Model.Konto
 {
@@ -10,6 +11,7 @@ namespace GCHR.Model.Konto
     {
         private static int _markeLength = 1;
         private static int _betriebLength = 2;
+        private static IMandant _mandant = new Test();
 
 
         public HaendlerKonto()
@@ -136,7 +138,7 @@ namespace GCHR.Model.Konto
 
         public override string ToString()
         {
-            return Marke + Betrieb + Kontonummer;
+            return Marke + "-" + Betrieb + "-" + Kontonummer;
         }
 
 
@@ -167,7 +169,7 @@ namespace GCHR.Model.Konto
             {
                 if (ZugeordneteKonten.Count > 0)
                 {
-                    var csv = "'" + ToString() + ";" +
+                    var csv = "'" + Mandant.KontonummerFormatieren(this) + ";" +
                               Bezeichnung + ";";
 
                     return ZugeordneteKonten.FindAll(kto => kto.Summe != 0).Select(kto => csv + kto.KontoCsv[0]).ToList();
@@ -177,7 +179,7 @@ namespace GCHR.Model.Konto
                 {
                     return new List<string>
                     {
-                        string.Format("'{0};{8};;;{1}{2};'{3};'{4};{5:0.2};{6:0.00};{7:0.00}", ToString(),
+                        string.Format("'{0};{8};;;{1}{2};'{3};'{4};{5:0.2};{6:0.00};{7:0.00}", Mandant.KontonummerFormatieren(this),
                                       KontoTypKuerzel(KontoTyp), Minus, Marke, Betrieb, Soll, Haben, Summe, Bezeichnung)
                     };
                 }
@@ -291,5 +293,11 @@ namespace GCHR.Model.Konto
         public decimal SummeAktuellePeriode { get { return Monatssumme(Model.Periode.AktuellePeriode.ToString()); } }
 
         public string Kontoart { get; set; }
+
+        internal static IMandant Mandant
+        {
+            get { return _mandant; }
+            set { _mandant = value; }
+        }
     }
 }