예제 #1
0
 public static void Init()
 {
     // загрузка из файла
     FileXml =General.GetUserDataFile("","CommandCounter.xml");
     if (File.Exists(FileXml))
     {
         SerializerXml xmlSer = new SerializerXml(FileXml);
         try
         {
             Counter = xmlSer.DeserializeXmlFile<CommandCounter>();
             if (Counter != null)
             {
                 Counter._commands = Counter.Commands.Where(c=>!string.IsNullOrEmpty(c.CommandName)).ToDictionary(c=>c.CommandName, c=>c);
                 Logger.Log.Debug($"Counter.Commands.Count={Counter.Commands.Count}");
                 return;
             }
         }
         catch (Exception ex)
         {
             Logger.Log.Error(ex, $"Не удалось десериализовать файл {FileXml}");
         }
     }
     Logger.Log.Debug($"Counter = new CommandCounter();");
     Counter = new CommandCounter();
 }
예제 #2
0
        private static Settings Load()
        {
            Settings res;

            if (File.Exists(FileSettings))
            {
                try
                {
                    SerializerXml ser = new SerializerXml(FileSettings);
                    res = ser.DeserializeXmlFile <Settings>();
                }
                catch
                {
                    res = new Settings();
                    res.SetDefault();
                }
            }
            else
            {
                res = new Settings();
                res.SetDefault();
                res.Save();
            }
            return(res);
        }
예제 #3
0
 /// <summary>
 /// 初始化配置
 /// </summary>
 static DP()
 {
     if (config == null)
     {
         config = (List <TableConfiguration>)SerializerXml.LoadSettings(@"E:\01技术研究\ORM\TYSystem.Dapper\Dapper.Test\bin\Debug\TableConfig.xml", typeof(List <TableConfiguration>));
     }
 }
        /// <summary>
        /// Loads the user settings from disk.
        /// </summary>
        public override void Load()
        {
            if (!Device.File.Exists(_settingsPath))
            {
                return;
            }

            byte[] settingsBytes = Device.File.Read(_settingsPath);

            var serializer = new SerializerXml <BasicSettingsDictionary>();
            BasicSettingsDictionary storedSettings = serializer.DeserializeObject(settingsBytes);

            if (storedSettings != null)
            {
                Clear();
                foreach (KeyValuePair <string, string> kvp in storedSettings)
                {
                    Add(kvp);
                }
            }
            else
            {
                Device.Log.Warn("Failed to load Settings from : " + _settingsPath);
            }
        }
예제 #5
0
        public static HorizontalElevationOptions Load()
        {
            HorizontalElevationOptions options = null;

            // загрузка из файла настроек
            if (File.Exists(fileOptions))
            {
                SerializerXml xmlSer = new SerializerXml(fileOptions);
                try
                {
                    options = xmlSer.DeserializeXmlFile <HorizontalElevationOptions>();
                    if (options != null)
                    {
                        return(options);
                    }
                }
                catch (Exception ex)
                {
                    Logger.Log.Error(ex, $"Не удалось десериализовать настройки из файла {fileOptions}");
                }
            }
            options = new HorizontalElevationOptions();
            options.Save();
            return(options);
        }
예제 #6
0
 static ChloeContent()
 {
     if (TableConfig == null)
     {
         TableConfig = (List <TableConfiguration>)SerializerXml.LoadSettings(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TableConfig.xml"), typeof(List <TableConfiguration>));
     }
 }
        static void Main(string[] args)
        {
            LightWebClient lwc = new LightWebClient("server", "pasword");

            Boolean testXml  = true;
            Boolean testList = false;

            try
            {
                if (testXml)
                {
                    if (testList)
                    {
                        TaskAwaiter <Stream> tat = lwc.GetStreamAsync(@"https://xldeploy.toto.com/deployit/repository/query?type=udm.DeployedApplication&resultsPerPage=-1", "XML").GetAwaiter();
                        Stream st = tat.GetResult();

                        ListOfCi loci = SerializerXml <XLDeployNamespace.ListOfCi> .GetInstance().Deserialize(st);

                        Console.WriteLine(loci.lstCi[0].reference + "    " + loci.lstCi[0].type);
                    }
                    else
                    {
                        TaskAwaiter <Stream> tat = lwc.GetStreamAsync(@"https://xldeploy.toto.com/deployit/repository/ci/Environments/DEV/project/environment/deployments/product_deployment", "XML").GetAwaiter();
                        Stream   st   = tat.GetResult();
                        XElement elem = XDocument.Load(st).Root;
                        Console.WriteLine(elem.Name.LocalName);
                        st.Seek(0, 0);
                        XLDeployNamespace.Dictionary dict = SerializerXml <XLDeployNamespace.Dictionary> .GetInstance().Deserialize(st);
                    }
                }
                else
                {
                    TaskAwaiter <Stream> tat = lwc.GetStreamAsync(@"https://xldeploy.toto.com/deployit/repository/query?type=udm.DeployedApplication&resultsPerPage=-1", "JSON").GetAwaiter();

                    Stream st = tat.GetResult();
                    //StreamReader reader = new StreamReader(st);
                    //string text = reader.ReadToEnd();
                    //Console.Write(text);
                    //ListOfCi loci = new ListOfCi();
                    List <CiListElement> loci = new List <CiListElement>();
                    //var serializer = new XmlSerializer(typeof(ListOfCi));
                    //Application di = new Application();
                    //var serializer = new DataContractJsonSerializer(typeof(Application));
                    //var serializer = new DataContractJsonSerializer(typeof(ListOfCi));
                    var serializer = new DataContractJsonSerializer(typeof(List <CiListElement>));
                    loci = (List <CiListElement>)serializer.ReadObject(st);
                    //di = (Application)serializer.ReadObject(st);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.ReadKey();
        }
예제 #8
0
 private void Save()
 {
     try
     {
         SerializerXml ser = new SerializerXml(FileSettings);
         ser.SerializeList(this);
     }
     catch
     {
     }
 }
예제 #9
0
        /// <summary>
        /// 序列化当前队列
        /// </summary>
        public static void SaveUrlQueue()
        {
            List <string> QueueList = new List <string>();

            if (UrlQueue.Instance.Count > 0)
            {
                while (UrlQueue.Instance.Count > 0)
                {
                    QueueList.Add(UrlQueue.Instance.DeQueue().UrlString);
                }
                SerializerXml <List <string> > serial = new SerializerXml <List <string> >(QueueList);
                serial.BuildXml(string.Format("UrlQueue_{0}.xml", simpleCrawler.DataTableName));
            }
        }
예제 #10
0
 public void Save()
 {
     try
     {
         if (!File.Exists(fileOptions))
         {
             Directory.CreateDirectory(Path.GetDirectoryName(fileOptions));
         }
         SerializerXml xmlSer = new SerializerXml(fileOptions);
         xmlSer.SerializeList(this);
     }
     catch (Exception ex)
     {
         Logger.Log.Error(ex, $"Не удалось сериализовать настройки в {fileOptions}");
     }
 }
예제 #11
0
 public void Save()
 {
     try
      {
     if (!File.Exists(fileOptions))
     {
        Directory.CreateDirectory(Path.GetDirectoryName(fileOptions));
     }
     SerializerXml xmlSer = new SerializerXml(fileOptions);
     xmlSer.SerializeList(Instance);
      }
      catch (Exception ex)
      {
     Log.Error(ex, $"Не удалось сериализовать настройки в {fileOptions}");
      }
 }
예제 #12
0
        /// <summary>
        /// 反序列化当前队列
        /// </summary>
        /// <returns></returns>
        public static List <string> LoadUrlQueue()
        {
            var           fileName  = string.Format("UrlQueue_{0}.xml", simpleCrawler.DataTableName);
            List <string> QueueList = new List <string>();

            if (File.Exists(fileName))
            {
                SerializerXml <List <string> > serial = new SerializerXml <List <string> >(QueueList);
                QueueList = serial.BuildObject(fileName);
                if (QueueList.Count() > 0)
                {
                    QueueList.ForEach(c => { UrlQueue.Instance.EnQueue(new UrlInfo(c)); });
                }
            }
            return(QueueList);
        }
예제 #13
0
        public async Task <SignDocumentResult <ICFDINomProvider> > StampDocumetAsync(
            SignDocumentResult <ICFDINomProvider> signDocumentResult, FiscalStampingVersion fiscalStampingVersion, string xml)
        {
            var stampingResult = String.Empty;

            var stampingRequest_CFDI33Nom12 = new StampingRequest_CFDI33Nom12();

            stampingRequest_CFDI33Nom12.Version         = VERSION;
            stampingRequest_CFDI33Nom12.PACDocumentType = PAC_DOCUMENT_TYPE;
            stampingRequest_CFDI33Nom12.Body            = new CFDIRequest_CFDI33Nom12()
            {
                XmlString = xml
            };
            stampingRequest_CFDI33Nom12.AdditionalInformation.Add(new AdditionalInformation_CFDI33Nom12(PAC_ATTRIBUTE_TITLE_RFC, signDocumentResult.EmployerRFC));
            stampingRequest_CFDI33Nom12.AdditionalInformation.Add(new AdditionalInformation_CFDI33Nom12(PAC_ATTRIBUTE_TITLE_PRODUCT, PAC_ATTRIBUTE_VALUE_PRODUCT));
            stampingRequest_CFDI33Nom12.AdditionalInformation.Add(new AdditionalInformation_CFDI33Nom12(PAC_ATTRIBUTE_TITLE_PRODUCT_VERSION, PAC_ATTRIBUTE_VALUE_PRODUCT_VERSION));
            stampingRequest_CFDI33Nom12.AdditionalInformation.Add(new AdditionalInformation_CFDI33Nom12(PAC_ATTRIBUTE_TITLE_PRODUCT_TYPE, PAC_ATTRIBUTE_VALUE_PRODUCT_TYPE));
            stampingRequest_CFDI33Nom12.Token = "";

            //call service async
            await ServiceHelperExtensions.CallRestServiceAsync(Format.JSON, RestMethod.POST, null,
                                                               new Uri($"{StampingUri}"), new object[] { stampingRequest_CFDI33Nom12 })
            .ContinueWith((i) =>
            {
                if (i.Result.Contains("FAIL") || i.Result.Contains("An error has occurred"))
                {
                    throw new CotorraException(90001, "90001", i.Result, null);
                }

                stampingResult = i.Result;
            });

            var stampingResult_CFDI33Nom12 = JsonSerializer.DeserializeObject <StampingResult_CFDI33Nom12>(stampingResult);

            //TFD
            var responseList = stampingResult_CFDI33Nom12.ResponseList_CFDI33Nom12.FirstOrDefault();
            var tfd          = SerializerXml.DeserializeObject <TimbreFiscalDigital>(responseList.ResponseValue);

            var complementos = (signDocumentResult.CFDI as Comprobante).Complemento.ToList();

            //complementos.Add(new ComprobanteComplemento() { Any = new XmlElement[1] { GetElement(CreateXmlNom(tfd)) } });
            (signDocumentResult.CFDI as Comprobante).Complemento = complementos.ToArray();

            signDocumentResult.UUID = Guid.Parse(tfd.UUID);

            return(signDocumentResult);
        }
        /// <summary>
        /// creates the cancelacion xml
        /// </summary>
        /// <param name="cancelDocumentParams"></param>
        /// <param name="cancelacion"></param>
        /// <returns></returns>
        private string createCancelationXML(CancelDocumentParams cancelDocumentParams, Cancelacion cancelacion)
        {
            //get FiscalInformation
            X509Certificate2 x509Certificate2 = new X509Certificate2(cancelDocumentParams.CertificateCER);

            //get cancelacion xml
            string xml = SerializerXml.SerializeObject(cancelacion);

            System.Security.Cryptography.Xml.Signature signature = new Cotorra.DigitalSign.DigitalSign().ApplySignature(cancelDocumentParams.CertificateKey,
                                                                                                                        cancelDocumentParams.Password, xml);
            cancelacion.Signature            = new SignatureType();
            cancelacion.Signature.SignedInfo = new SignedInfoType();
            cancelacion.Signature.SignedInfo.CanonicalizationMethod           = new CanonicalizationMethodType();
            cancelacion.Signature.SignedInfo.CanonicalizationMethod.Algorithm = signature.SignedInfo.CanonicalizationMethodObject.Algorithm;
            cancelacion.Signature.SignedInfo.SignatureMethod           = new SignatureMethodType();
            cancelacion.Signature.SignedInfo.SignatureMethod.Algorithm = signature.SignedInfo.SignatureMethod;
            cancelacion.Signature.SignedInfo.Reference = new ReferenceType();
            Reference reference = (Reference)signature.SignedInfo.References[0];

            cancelacion.Signature.SignedInfo.Reference.URI        = reference.Uri;
            cancelacion.Signature.SignedInfo.Reference.Transforms = new List <TransformType>()
            {
                new TransformType()
                {
                    Algorithm = ALGORITHM_TRANSFORMATION
                }
            }.ToArray();
            cancelacion.Signature.SignedInfo.Reference.DigestMethod           = new DigestMethodType();
            cancelacion.Signature.SignedInfo.Reference.DigestMethod.Algorithm = reference.DigestMethod;
            cancelacion.Signature.SignedInfo.Reference.DigestValue            = reference.DigestValue;
            cancelacion.Signature.SignatureValue   = signature.SignatureValue;
            cancelacion.Signature.KeyInfo          = new KeyInfoType();
            cancelacion.Signature.KeyInfo.X509Data = new X509DataType();
            cancelacion.Signature.SignedInfo.Reference.DigestValue = reference.DigestValue;
            cancelacion.Signature.SignatureValue   = signature.SignatureValue;
            cancelacion.Signature.KeyInfo          = new KeyInfoType();
            cancelacion.Signature.KeyInfo.X509Data = new X509DataType();
            cancelacion.Signature.KeyInfo.X509Data.X509IssuerSerial = new X509IssuerSerialType();
            cancelacion.Signature.KeyInfo.X509Data.X509IssuerSerial.X509IssuerName   = x509Certificate2.Issuer;
            cancelacion.Signature.KeyInfo.X509Data.X509IssuerSerial.X509SerialNumber = x509Certificate2.GetSerialNumberString();
            cancelacion.Signature.KeyInfo.X509Data.X509Certificate = x509Certificate2.GetRawCertData();

            //get xml cancelacion
            string xmlCancelacion = SerializerXml.SerializeObject(cancelacion);

            return(xmlCancelacion);
        }
예제 #15
0
 public void Save()
 {
    try
    {
       if (!File.Exists(fileOptions))
       {
          Directory.CreateDirectory(Path.GetDirectoryName(fileOptions));
       }
       SerializerXml xmlSer = new SerializerXml(fileOptions);
       xmlSer.SerializeList(this);
       SaveDrawingOptions();
    }
    catch (Exception ex)
    {
       Logger.Log.Error(ex, "Не удалось сериализовать настройки в {0}", fileOptions);
    }
 }
예제 #16
0
        public async Task Should_Deseralize()
        {
            string xml = "<tfd:TimbreFiscalDigital xmlns:tfd=\"http://www.sat.gob.mx/TimbreFiscalDigital\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet/cfd/timbrefiscaldigital/TimbreFiscalDigitalv11.xsd\" Version=\"1.1\" UUID=\"3330E934-B635-4561-AFD8-7A49B75F4AAA\" FechaTimbrado=\"2020-06-17T11:38:16\" RfcProvCertif=\"MAS0810247C0\" SelloCFD=\"QLNSw2sKG8WQws0KH5sw3ciasgXQnEIbpiwPJ62vhEtF8JSS3YA17BkSNZ7qKI4j72CAjdjmtYvDS8CoM4e+AIOFQBs7D0USAKClDJear/dJ6QBT4NVGP2o7YHrl4w5hh4zWmCdS5MA2BnATzWuluyLXhdFLWNHQTG4uLl9ZnZ3hhgxgpkxoVGuIZ0O0igYn9d/imj6jODLg2+goMXr39+nE9gnGM7bm0KkjPuv3TjeG+DmE1W+UmWzqKGOgh/1h0OwaE9RyJ3B58xD3+nMQPTdxfm/eotEFLpaw17ANbS/Uoxr5KQR7WCh3ooxLdBk4emGppbuAMn70ToL15/lv+w==\" NoCertificadoSAT=\"30001000000400002495\" SelloSAT=\"WEDtOHwRJFMYbMeF75KDheWP5eKPU/OErwoyKIchcoAfUUUDCFh3NdIzwEEVebklAPS0Nh7bctdOyDQehAb/GV15vG9iRrh45P/P86+ZNKBMln+bQhwe22trycXU0xduY9xdJWE244dObYEayROYuFoe1NyJsoifbn4dUTh8nZyqLrupOwhGY7+NOGDqskfWsSGh8/KMxJGza2upGVAcSH8D0grfA1HLQegqtSFUBTKCFnJzFJwiUToHP3q4ZXHnsDkN03+usGkTII6M8aoswcogB3+RTSfKaXz9pJLRTN6j0Blyhbz8MySbxl+C71ZfZByj7pjPK8JiIxjqKldX9g==\" />";
            var    tfd = SerializerXml.DeserializeObject <Schema.CFDI33Nom12.TimbreFiscalDigital>($"<?xml version=\"1.0\" encoding=\"utf-8\"?>{xml}");

            List <string> xsdsFiles = new List <string> {
                @"C:\Projects\Cotorra\Cotorra.Schema\bin\Debug\netstandard2.1\fiscal\cfdi33nom12\xsd\cfdv33.xsd",
                @"C:\Projects\Cotorra\Cotorra.Schema\bin\Debug\netstandard2.1\fiscal\cfdi33nom12\xsd\catCFDI.xsd",
                @"C:\Projects\Cotorra\Cotorra.Schema\bin\Debug\netstandard2.1\fiscal\cfdi33nom12\xsd\catNomina.xsd",
                @"C:\Projects\Cotorra\Cotorra.Schema\bin\Debug\netstandard2.1\fiscal\cfdi33nom12\xsd\nomina12.xsd",
                @"C:\Projects\Cotorra\Cotorra.Schema\bin\Debug\netstandard2.1\fiscal\cfdi33nom12\xsd\tdCFDI.xsd",
                @"C:\Projects\Cotorra\Cotorra.Schema\bin\Debug\netstandard2.1\fiscal\cfdi33nom12\xsd\TimbreFiscalDigitalv11.xsd",
            };
            string xmlFile = @"C:\Users\Hector.Ramirez\Desktop\cfdi.xml";

            var xdoc    = XDocument.Load(xmlFile);
            var schemas = new XmlSchemaSet();

            foreach (var xsdFile in xsdsFiles)
            {
                using (FileStream stream = File.OpenRead(xsdFile))
                {
                    schemas.Add(XmlSchema.Read(stream, (s, e) =>
                    {
                        var x = e.Message;
                    }));
                }
            }

            bool          isvalid = true;
            StringBuilder sb      = new StringBuilder();

            try
            {
                xdoc.Validate(schemas, (s, e) =>
                {
                    isvalid = false;
                    sb.AppendLine(string.Format("Line : {0}, Message : {1} ",
                                                e.Exception.LineNumber, e.Exception.Message));
                });
            }
            catch (XmlSchemaValidationException ex)
            {
                isvalid = false;
            }
        }
예제 #17
0
        public void FromPathByModel()
        {
            // Prerequisites
            const string path = "test-result.xml";

            var serializer = new SerializerXml<Vehicle, VehicleData>();
            var vehicleA = new Vehicle
            {
                SpeedMax = 50,
                CurrentSpeed = 20
            };

            // Process
            serializer.Save(vehicleA, path);

            Vehicle vehicleB = serializer.Instantiate(path);

            // Test
            Assert.IsTrue(vehicleB.SpeedMax == vehicleA.SpeedMax);
        }
예제 #18
0
        public void FromStreamByModel()
        {
            // Prerequisites
            var serializer = new SerializerXml<Vehicle, VehicleData>();
            var vehicleA = new Vehicle
            {
                SpeedMax = 50,
                CurrentSpeed = 20
            };

            // Process
            var stringWriter = new StringWriter();
            serializer.Save(vehicleA, stringWriter);

            var stringReader = new StringReader(stringWriter.ToString());
            Vehicle vehicleB = serializer.Instantiate(stringReader);

            // Test
            Assert.IsTrue(vehicleB.SpeedMax == vehicleA.SpeedMax);
        }
예제 #19
0
        public void FromPath()
        {
            // Prerequisites
            const string path = "test-result.xml";

            var serializer = new SerializerXml<Passenger>();
            var passengerA = new Passenger
            {
                Name = "John",
                Age = 20
            };

            // Process
            serializer.Save(passengerA, path);
            Passenger passengerB = serializer.Instantiate(path);

            // Test
            Assert.IsTrue(passengerB.Name == passengerA.Name);
            Assert.IsTrue(passengerB.Age == passengerA.Age);
        }
예제 #20
0
        public void FromStream()
        {
            // Prerequisites
            var serializer = new SerializerXml<Passenger>();
            var vehicleA = new Passenger
            {
                Name = "John",
                Age = 20
            };

            // Process
            var stringWriter = new StringWriter();
            serializer.Save(vehicleA, stringWriter);

            var stringReader = new StringReader(stringWriter.ToString());
            Passenger vehicleB = serializer.Instantiate(stringReader);

            // Test
            Assert.IsTrue(vehicleB.Name == vehicleA.Name);
            Assert.IsTrue(vehicleB.Age == vehicleA.Age);
        }
예제 #21
0
 protected static OptionsAbstract load(string file)
 {
     OptionsAbstract options = null;
      // загрузка из файла настроек
      if (File.Exists(file))
      {
     SerializerXml xmlSer = new SerializerXml(file);
     try
     {
        options = xmlSer.DeserializeXmlFile<OptionsAbstract>();
        if (options != null)
        {
           return options;
        }
     }
     catch (Exception ex)
     {
        Log.Error(ex, "Не удалось десериализовать настройки из файла {0}", file);
     }
      }
      return defaultOptions();
 }
예제 #22
0
 public static IsolineOptions Load()
 {
    IsolineOptions options = null;
    // загрузка из файла настроек
    if (File.Exists(fileOptions))
    {
       SerializerXml xmlSer = new SerializerXml(fileOptions);
       try
       {
          options = xmlSer.DeserializeXmlFile<IsolineOptions>();
          if (options != null)
          {
             options.LoadDrawingOptions();
             return options;
          }
       }
       catch (Exception ex)
       {
          Logger.Log.Error(ex, "Не удалось десериализовать настройки из файла {0}", fileOptions);
       }
    }
    return DefaultOptions();
 }
예제 #23
0
파일: Options.cs 프로젝트: vildar82/AcadLib
 public static Options Load()
 {
     Options options = null;
     // загрузка из файла настроек
     if (File.Exists(fileOptions))
     {
         SerializerXml xmlSer = new SerializerXml(fileOptions);
         try
         {
             options = xmlSer.DeserializeXmlFile<Options>();
             if (options != null)
             {
                 return options;
             }
         }
         catch (Exception ex)
         {
             Logger.Log.Error(ex, $"Не удалось десериализовать настройки из файла {fileOptions}");
         }
     }
     options = new Options();
     options.Save();
     return options;
 }
예제 #24
0
        private static LineParkingOptions load()
        {
            LineParkingOptions options = null;

            // загрузка из файла настроек
            if (File.Exists(fileOptions))
            {
                SerializerXml xmlSer = new SerializerXml(fileOptions);
                try
                {
                    options = xmlSer.DeserializeXmlFile <LineParkingOptions>();
                    if (options != null)
                    {
                        options.checkValues();
                        return(options);
                    }
                }
                catch (Exception ex)
                {
                    Log.Error(ex, "Не удалось десериализовать настройки из файла {0}", fileOptions);
                }
            }
            return(defaultOptions());
        }
예제 #25
0
        public static IsolineOptions Load()
        {
            IsolineOptions options = null;

            // загрузка из файла настроек
            if (File.Exists(fileOptions))
            {
                SerializerXml xmlSer = new SerializerXml(fileOptions);
                try
                {
                    options = xmlSer.DeserializeXmlFile <IsolineOptions>();
                    if (options != null)
                    {
                        options.LoadDrawingOptions();
                        return(options);
                    }
                }
                catch (Exception ex)
                {
                    Logger.Log.Error(ex, "Не удалось десериализовать настройки из файла {0}", fileOptions);
                }
            }
            return(DefaultOptions());
        }
        /// <summary>
        /// Saves the application's settings to disk.
        /// </summary>
        public override void Store()
        {
            var serializer = new SerializerXml <BasicSettingsDictionary>();

            serializer.SerializeObjectToFile(this, _settingsPath);
        }
        /// <summary>
        /// CancelDocumetAsync
        /// </summary>
        /// <returns></returns>
        public async Task <CancelPayrollStampingResult> CancelDocumetAsync(CancelDocumentParams cancelDocumentParams)
        {
            var cancelPayrollStampingResult = new CancelPayrollStampingResult();

            try
            {
                //Get datetime from ZipCode of Employer
                var zipCodeManager = new ZipCodeManager(cancelDocumentParams.ZipCodes);
                (var zipcode, var datetimeFromZipCode) = await zipCodeManager.GetZipCode(cancelDocumentParams.IssuerZipCode);

                //Fill the cancelation object
                Cancelacion cancelacion = new Cancelacion();
                cancelacion.RfcEmisor = cancelDocumentParams.IssuerRFC;
                cancelacion.Fecha     = DateTime.Parse(string.Format("{0:s}", datetimeFromZipCode), CultureInfo.InvariantCulture);
                var cancelacionFolios = new List <CancelacionFolios>();
                var uuids             = cancelDocumentParams.CancelDocumentParamsDetails.Select(p => p.UUID).ToList();
                uuids.ForEach(p => cancelacionFolios.Add(new CancelacionFolios()
                {
                    UUID = p.ToString().ToLower()
                }));
                cancelacion.Folios = cancelacionFolios.ToArray();

                //Creates the cancelationXML
                var xmlCancelation = createCancelationXML(cancelDocumentParams, cancelacion);

                //Call PAC for cancelation
                var stampResult = new CancelDocumentResult <ICFDINomProvider>();
                stampResult.CancelationXML = xmlCancelation;
                stampResult.InstanceID     = cancelDocumentParams.InstanceID;
                IPACProvider pACProvider          = FactoryPACProvider.CreateInstanceFromConfig();
                var          cancelationPACResult = await pACProvider.CancelStampingDocumentAsync(stampResult);

                if (cancelationPACResult.WithErrors)
                {
                    cancelPayrollStampingResult.WithErrors = true;
                    cancelPayrollStampingResult.Message    = cancelationPACResult.Details;
                }
                else
                {
                    cancelPayrollStampingResult.WithErrors                        = false;
                    cancelPayrollStampingResult.CancelacionXMLRequest             = cancelationPACResult.CancelationXML;
                    cancelPayrollStampingResult.CancelacionXMLAcknowledgeResponse = cancelationPACResult.CancelationAcknowledgmentReceipt;

                    //Fill each UUID with the proper status
                    var acuse = SerializerXml.DeserializeObject <Acuse>(cancelationPACResult.CancelationAcknowledgmentReceipt);
                    acuse.Folios.ForEach(p =>
                    {
                        var detail = new CancelPayrollStampingResultDetail();

                        /*
                         * 201 - El folio se ha cancelado con éxito.
                         * 202 - El CFDI ya había sido cancelado previamente.
                         * 203 - UUID no corresponde al emisor.
                         * 204 - El CFDI no aplica para cancelación.
                         * 205 - El UUID no existe o no ha sido procesado por el SAT.
                         * 402 - El Contribuyente no se encuentra el la LCO o la validez de obligaciones se reporta como negativa.
                         */
                        if (p.EstatusUUID == "201" || p.EstatusUUID == "202") //estatus good
                        {
                            statusCancelationCodes.TryGetValue(p.EstatusUUID, out string message);
                            detail.Message = $"{p.EstatusUUID} : {message}";
                            detail.UUID    = Guid.Parse(p.UUID);
                            detail.PayrollStampingResultStatus = PayrollStampingResultStatus.Success;
                        }
                        else
                        {
                            statusCancelationCodes.TryGetValue(p.EstatusUUID, out string message);
                            detail.Message = $"Error al cancelar {p.EstatusUUID} : {message}";
                            detail.UUID    = Guid.Parse(p.UUID);
                            detail.PayrollStampingResultStatus = PayrollStampingResultStatus.Fail;
                        }
                        cancelPayrollStampingResult.CancelPayrollStampingResultDetails.Add(detail);
                    });
                }
            }
            catch (Exception ex)
            {
                cancelPayrollStampingResult.WithErrors = true;
                cancelPayrollStampingResult.Message    = $"Ocurrió un error no controlado en la cancelación: {ex.Message}";
            }

            return(cancelPayrollStampingResult);
        }
예제 #28
0
 private static LineParkingOptions load()
 {
     LineParkingOptions options = null;
      // загрузка из файла настроек
      if (File.Exists(fileOptions))
      {
     SerializerXml xmlSer = new SerializerXml(fileOptions);
     try
     {
        options = xmlSer.DeserializeXmlFile<LineParkingOptions>();
        if (options != null)
        {
           options.checkValues();
           return options;
        }
     }
     catch (Exception ex)
     {
        Log.Error(ex, "Не удалось десериализовать настройки из файла {0}", fileOptions);
     }
      }
      return defaultOptions();
 }
예제 #29
0
 public void Save()
 {
     if (_commands == null) return;
     Commands = _commands.Values.ToList();
     // Удаление старых вызовов команд - старше 2 месяцев
     removeOldDates(Commands);
     try
     {
         if (!File.Exists(FileXml))
         {
             Directory.CreateDirectory(Path.GetDirectoryName(FileXml));
         }
         SerializerXml xmlSer = new SerializerXml(FileXml);
         xmlSer.SerializeList(this);
     }
     catch (Exception ex)
     {
         Logger.Log.Error(ex, $"Не удалось сериализовать CommandCounter в {FileXml}");
     }
 }
예제 #30
0
        public async Task Should_Stamp_Payroll_CFDI_Valid()
        {
            var xmlCancelacion = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Acuse xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" Fecha=\"2020-07-02T16:02:07.2838838\" RfcEmisor=\"KAHO641101B39\">  <Folios xmlns=\"http://cancelacfd.sat.gob.mx\">    <UUID>3377E0AA-C54B-4E9E-BFF2-1D8BA96D5DD4</UUID>    <EstatusUUID>201</EstatusUUID>  </Folios>  <Signature Id=\"SelloSAT\" xmlns=\"http://www.w3.org/2000/09/xmldsig#\">    <SignedInfo>      <CanonicalizationMethod Algorithm=\"http://www.w3.org/TR/2001/REC-xml-c14n-20010315\" />      <SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#hmac-sha512\" />      <Reference URI=\"\">        <Transforms>          <Transform Algorithm=\"http://www.w3.org/TR/1999/REC-xpath-19991116\">            <XPath>not(ancestor-or-self::*[local-name()='Signature'])</XPath>          </Transform>        </Transforms>        <DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha512\" />        <DigestValue>BThmOyTf26Ax25v8Li0oqcP3wyrhW3kjjxOcO1zamRYasNIPcHSnBiRyxmJ449a3gdgAWaz/UKVil3pqcper+g==</DigestValue>      </Reference>    </SignedInfo>    <SignatureValue>6qDGoWoHW5tK2MGNiXU7fI6hfpkbrYTMHafVvIsGRkl9xq2H2YQRvId4CO7B9GGJFbuVMku2IBkpKU/Tscqo9Q==</SignatureValue>    <KeyInfo>      <KeyName>BF66E582888CC845</KeyName>      <KeyValue>        <RSAKeyValue>          <Modulus>n5YsGT0w5Z70ONPbqszhExfJU+KY3Bscftc2jxUn4wxpSjEUhnCuTd88OK5QbDW3Mupoc61jr83lRhUCjchFAmCigpC10rEntTfEU+7qtX8ud/jJJDB1a9lTIB6bhBN//X8IQDjhmHrfKvfen3p7RxLrFoxzWgpwKriuGI5wUlU=</Modulus>          <Exponent>AQAB</Exponent>        </RSAKeyValue>      </KeyValue>    </KeyInfo>  </Signature></Acuse>";
            var acuse          = SerializerXml.DeserializeObject <Schema.CFDI33Nom12.Acuse>(xmlCancelacion);

            using var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled);

            try
            {
                var identityWorkId = Guid.NewGuid();
                var instanceID     = Guid.NewGuid();

                var overdraft      = await new PayrollStampingManagerUT().CreateRealOverdraftAsync(identityWorkId, instanceID);
                var periodDetailID = overdraft.PeriodDetailID;

                //Recalculate
                var calculateParams = new CalculateOverdraftParams()
                {
                    DeleteAccumulates = true,
                    IdentityWorkID    = identityWorkId,
                    InstanceID        = instanceID,
                    OverdraftID       = overdraft.ID,
                    ResetCalculation  = true,
                    SaveOverdraft     = true,
                    UserID            = Guid.Empty
                };

                var calculationResult = await new OverdraftCalculationManager().CalculateAsync(calculateParams);
                overdraft = (calculationResult as CalculateOverdraftResult).OverdraftResult;
                Assert.True(overdraft.OverdraftDetails.Sum(p => p.Amount) > 0);

                //Autorización de la nómina
                var authorizationManager = new AuthorizationManager();
                var authorizationParams  = new AuthorizationParams()
                {
                    IdentityWorkID            = identityWorkId,
                    InstanceID                = instanceID,
                    PeriodDetailIDToAuthorize = periodDetailID,
                    ResourceID                = Guid.Empty,
                    user = Guid.Empty
                };

                //autorizacion de la nómina
                var historicOverdrafts = await authorizationManager.AuthorizationAsync(authorizationParams);

                //Timbrado

                var overdraftManager   = new MiddlewareManager <Overdraft>(new BaseRecordManager <Overdraft>(), new OverdraftValidator());
                var overdraftsPrevious = await overdraftManager.FindByExpressionAsync(p => p.PeriodDetailID == periodDetailID, identityWorkId);

                var manager       = new PayrollStampingManager();
                var dateTime      = DateTime.Now;
                var stampingParms = new PayrollStampingParams()
                {
                    FiscalStampingVersion = FiscalStampingVersion.CFDI33_Nom12,
                    IdentityWorkID        = identityWorkId,
                    InstanceID            = instanceID,
                    PeriodDetailID        = periodDetailID,
                    Detail = new List <PayrollStampingDetail>()
                    {
                        new PayrollStampingDetail()
                        {
                            Folio             = "2020",
                            Series            = "S1",
                            PaymentDate       = dateTime.AddDays(-2),
                            RFCOriginEmployer = null,
                            SNCFEntity        = null,
                            OverdraftID       = overdraftsPrevious.FirstOrDefault().ID,
                        }
                    },

                    Currency = Currency.MXN
                };

                var payrollStampingResult = await manager.PayrollStampingAsync(stampingParms);

                Assert.Contains(payrollStampingResult.PayrollStampingResultDetails, p => p.PayrollStampingResultStatus == PayrollStampingResultStatus.Success);

                //cancel payroll
                var cancelStampingManager = new CancelStampingManager();
                var cancelParams          = new CancelPayrollStampingParams()
                {
                    FiscalStampingVersion = FiscalStampingVersion.CFDI33_Nom12,
                    IdentityWorkID        = identityWorkId,
                    InstanceID            = instanceID,
                    OverdraftIDs          = overdraftsPrevious.Select(p => p.ID).ToList(),
                    user = Guid.Empty
                };

                await Task.Delay(10000);

                var cancelationResult = await cancelStampingManager.CancelPayrollStampingAsync(cancelParams);

                Assert.False(cancelationResult.WithErrors);

                var cancelManager = new MiddlewareManager <CancelationFiscalDocument>(new BaseRecordManager <CancelationFiscalDocument>(),
                                                                                      new CancelationFiscalDocumentValidator());
                var cancelations = await cancelManager.FindByExpressionAsync(p => p.InstanceID == instanceID, identityWorkId,
                                                                             new string[] { "CancelationFiscalDocumentDetails" });

                Assert.True(cancelations.Any());

                var overIds         = overdraftsPrevious.Select(p => p.ID).ToList();
                var olderOverdrafts = await overdraftManager.FindByExpressionAsync(p => overIds.Contains(p.ID), identityWorkId);

                Assert.False(olderOverdrafts.Any(p => p.OverdraftStatus != OverdraftStatus.Canceled));

                var newOverdrafts = await overdraftManager.FindByExpressionAsync(p => overIds.Contains(p.OverdraftPreviousCancelRelationshipID.Value), identityWorkId);

                Assert.False(newOverdrafts.Any(p => p.OverdraftPreviousCancelRelationshipID == null));
            }
            catch (Exception ex)
            {
                var t = ex.ToString();
                Assert.True(false, ex.ToString());
            }
        }
예제 #31
0
        public void InitializationFromPath()
        {
            // Prerequisites
            const string path = "test-result.xml";

            var serializer = new SerializerXml<Vehicle, VehicleData>();
            var vehicleA = new Vehicle
            {
                SpeedMax = 50,
                CurrentSpeed = 20
            };
            var vehicleB = new Vehicle
            {
                SpeedMax = 100,
                CurrentSpeed = 40
            };

            // Process
            serializer.Save(vehicleA, path);

            serializer.Load(vehicleB, path);

            // Test
            Assert.IsTrue(vehicleB.SpeedMax == vehicleA.SpeedMax);
        }
예제 #32
0
        public void InitializationFromStream()
        {
            // Prerequisites
            var serializer = new SerializerXml<Vehicle, VehicleData>();
            var vehicleA = new Vehicle
            {
                SpeedMax = 50,
                CurrentSpeed = 20
            };
            var vehicleB = new Vehicle
            {
                SpeedMax = 100,
                CurrentSpeed = 40
            };

            // Process
            var stringWriter = new StringWriter();
            serializer.Save(vehicleA, stringWriter);

            var stringReader = new StringReader(stringWriter.ToString());
            serializer.Load(vehicleB, stringReader);

            // Test
            Assert.IsTrue(vehicleB.SpeedMax == vehicleA.SpeedMax);
        }