public static string ValidataionUrl(this FiscalDocument item) { var data = string.Format(Resources.FiscalDocumentQRCode33FormatString, item.Issuer.Id, item.Recipient, item.Total, item.StampId, item.IssuerDigitalSeal?.Substring(item.IssuerDigitalSeal.Length - 8)); return(data); }
static Comprobante FiscalDocumentToCFDv33(FiscalDocument item) { if (item.Type == FiscalDocumentType.PaymentReceipt) { return(PaymentReceiptToCFDv33(item)); } return(InvoiceToCFDv33(item)); }
public static bool CancelCFD(FiscalDocument item) { if (item.IsCancelled) { return(false); } return(DFactureCancel(item)); }
public static Comprobante SignCFD(FiscalDocument item) { var cfd = FiscalDocumentToCFDv33(item); var cer = item.Issuer.Certificates.Single(x => x.Id == item.IssuerCertificateNumber); cfd.Sign(cer.KeyData, cer.KeyPassword); //System.IO.File.WriteAllText (System.Web.HttpContext.Current.Server.MapPath ("~/cfd.xml"), cfd.ToXmlString ()); return(cfd); }
public override int GetHashCode() { unchecked { var hashCode = (TimeRaw != null ? TimeRaw.GetDeterministicHashCode() : 0); hashCode = (hashCode * 397) ^ Sum.GetHashCode(); hashCode = (hashCode * 397) ^ (FiscalNumber != null ? FiscalNumber.GetDeterministicHashCode() : 0); hashCode = (hashCode * 397) ^ (FiscalDocument != null ? FiscalDocument.GetDeterministicHashCode() : 0); hashCode = (hashCode * 397) ^ (FiscalSign != null ? FiscalSign.GetDeterministicHashCode() : 0); hashCode = (hashCode * 397) ^ (N != null ? N.GetDeterministicHashCode() : 0); return(hashCode); } }
//static Comprobante ProFactStamp (FiscalDocument item) //{ // var cfd = SignCFD (item); // var cli = new ProFactClient (WebConfig.ProFactUser, WebConfig.ProFactUrl); // var id = string.Format ("{0}-{1:D6}", WebConfig.ProFactCode, item.Id); // //System.IO.File.WriteAllText ("cfd.xml", cfd.ToXmlString ()); // var tfd = cli.Stamp (id, cfd); // if (cfd.Complemento == null) { // cfd.Complemento = new List<object> (); // } // cfd.Complemento.Add (tfd); // return cfd; //} //static bool ProFactCancel (FiscalDocument item) //{ // try { // if (item.Version > 3.2m) { // var cli = new ProFactClient (WebConfig.ProFactUser, WebConfig.ProFactUrl); // return cli.Cancel (item.Issuer.Id, item.StampId); // } else { // var cli = new ProFactClient (WebConfig.ProFactUser, WebConfig.ProFactUrlV32); // return cli.CancelV32 (item.Issuer.Id, item.StampId); // } // } catch (ProFactClientException ex) { // if (ex.Code == "202") { // UUID Previamente cancelado // return true; // } // throw ex; // } //} static Comprobante DFactureStamp(FiscalDocument item) { var cfd = SignCFD(item); var cli = new DFactureClient(WebConfig.DFactureUser, WebConfig.DFacturePassword, WebConfig.DFactureUrl); //System.IO.File.WriteAllText ("cfd.xml", cfd.ToXmlString ()); var tfd = cli.Stamp(cfd); if (cfd.Complemento == null) { cfd.Complemento = new List <object> (); } cfd.Complemento.Add(tfd); return(cfd); }
public static bool CancelCFD(FiscalDocument item) { if (item.IsCancelled) { return false; } if (!item.IsCompleted || item.Version < CFDI_MIN_VERSION) { return true; } switch (item.Provider) { case FiscalCertificationProvider.FiscoClic: return FiscoClicCancel (item); default: return ProFactCancel (item); } }
static bool DFactureCancel(FiscalDocument item) { var cer = item.Issuer.Certificates.First(x => x.IsActive); var cli = new DFactureClient(WebConfig.DFactureUser, WebConfig.DFacturePassword, WebConfig.DFactureUrl); try { return(cli.Cancel(item.Issuer.Id, item.Recipient, item.StampId, item.Total.ToString(), Convert.ToBase64String(cer.CertificateData), Convert.ToBase64String(cer.KeyData), Encoding.UTF8.GetString(cer.KeyPassword))); } catch (DFactureClientException ex) { if (ex.Code == "202") // UUID Previamente cancelado { return(true); } throw ex; } }
public static dynamic InvoiceToCFD(FiscalDocument item) { switch (Convert.ToInt32 (item.Version * 10)) { case 32: return InvoiceToCFDv32 (item); case 22: return InvoiceToCFDv22 (item); case 20: return InvoiceToCFDv20 (item); } switch (item.Issuer.Scheme) { case FiscalScheme.CFD: return InvoiceToCFDv22 (item); case FiscalScheme.CFDI: return InvoiceToCFDv32 (item); } return null; }
public static Comprobante IssueCFD(FiscalDocument item) { return(DFactureStamp(item)); }
static Comprobante InvoiceToCFDv33(FiscalDocument item) { var cer = item.Issuer.Certificates.SingleOrDefault(x => x.Id == item.IssuerCertificateNumber); var cfd = new Comprobante { TipoDeComprobante = (c_TipoDeComprobante)FDT2TDC(item.Type), NoCertificado = item.IssuerCertificateNumber.PadLeft(20, '0'), Serie = item.Batch, Folio = item.Serial.ToString(), Fecha = item.Issued.GetValueOrDefault(), MetodoPago = item.Terms == PaymentTerms.Immediate ? c_MetodoPago.PagoEnUnaSolaExhibicion : c_MetodoPago.PagoEnParcialidadesODiferido, MetodoPagoSpecified = true, FormaPago = (c_FormaPago)(int)item.PaymentMethod, FormaPagoSpecified = true, LugarExpedicion = item.IssuedLocation, SubTotal = item.Subtotal, Total = item.Total, Moneda = item.Currency.GetDisplayName(), TipoCambio = item.ExchangeRate, TipoCambioSpecified = item.Currency != CurrencyCode.MXN, Sello = item.IssuerDigitalSeal, Certificado = (cer == null ? null : SecurityHelpers.EncodeBase64(cer.CertificateData)), Emisor = new ComprobanteEmisor { Rfc = item.Issuer.Id, Nombre = item.IssuerName, RegimenFiscal = (c_RegimenFiscal)int.Parse(item.IssuerRegime.Id), }, Receptor = new ComprobanteReceptor { Rfc = item.Recipient, Nombre = item.RecipientName, UsoCFDI = CfdiUsage2UsoCFDI(item.Usage.Id) }, Conceptos = new ComprobanteConcepto [item.Details.Count] }; int i = 0; foreach (var detail in item.Details) { cfd.Conceptos [i] = new ComprobanteConcepto { Cantidad = detail.Quantity, ClaveUnidad = detail.UnitOfMeasurement.Id, Unidad = detail.UnitOfMeasurementName, NoIdentificacion = detail.ProductCode, ClaveProdServ = detail.ProductService.Id, Descripcion = detail.ProductName, ValorUnitario = detail.NetPrice, Importe = detail.Subtotal, Descuento = detail.Discount, DescuentoSpecified = detail.Discount > 0m }; if (detail.Subtotal == detail.Discount) { i++; continue; } if (detail.TaxRate >= 0m) { cfd.Conceptos [i].Impuestos = new ComprobanteConceptoImpuestos { Traslados = new ComprobanteConceptoImpuestosTraslado [] { new ComprobanteConceptoImpuestosTraslado { Impuesto = c_Impuesto.IVA, TipoFactor = c_TipoFactor.Tasa, Base = detail.TaxBase, Importe = detail.Taxes, ImporteSpecified = true, TasaOCuota = detail.TaxRate, TasaOCuotaSpecified = true } }, Retenciones = item.RetentionRate <= 0m ? null : new ComprobanteConceptoImpuestosRetencion [] { new ComprobanteConceptoImpuestosRetencion { Impuesto = c_Impuesto.IVA, TipoFactor = c_TipoFactor.Tasa, Base = detail.TaxBase, Importe = detail.RetentionTaxes, TasaOCuota = item.RetentionRate } } }; } else { cfd.Conceptos [i].Impuestos = new ComprobanteConceptoImpuestos { Traslados = new ComprobanteConceptoImpuestosTraslado [] { new ComprobanteConceptoImpuestosTraslado { Impuesto = c_Impuesto.IVA, TipoFactor = c_TipoFactor.Exento, Base = detail.TaxBase } } }; } i++; } if (item.Discount > 0) { cfd.Descuento = item.Discount; cfd.DescuentoSpecified = true; } cfd.Impuestos = new ComprobanteImpuestos(); var taxes = new List <ComprobanteImpuestosTraslado> (); if (cfd.Conceptos.Any(c => c.Impuestos != null && c.Impuestos.Traslados.Any(x => x.TasaOCuota == decimal.Zero))) { taxes.Add(new ComprobanteImpuestosTraslado { Impuesto = c_Impuesto.IVA, TipoFactor = c_TipoFactor.Tasa, TasaOCuota = 0.000000m, Importe = 0.00m }); } if (cfd.Conceptos.Any(c => c.Impuestos != null && c.Impuestos.Traslados.Any(x => x.TasaOCuota == WebConfig.DefaultVAT))) { taxes.Add(new ComprobanteImpuestosTraslado { Impuesto = c_Impuesto.IVA, TipoFactor = c_TipoFactor.Tasa, TasaOCuota = WebConfig.DefaultVAT, Importe = cfd.Conceptos.Where(x => x.Impuestos != null).Sum(c => c.Impuestos.Traslados.Where(x => x.TasaOCuota == WebConfig.DefaultVAT).Sum(x => x.Importe)) }); } cfd.Impuestos.Traslados = taxes.ToArray(); cfd.Impuestos.TotalImpuestosTrasladados = cfd.Impuestos.Traslados.Sum(x => x.Importe); cfd.Impuestos.TotalImpuestosTrasladadosSpecified = true; if (item.RetentionRate > 0m) { cfd.Impuestos.Retenciones = new ComprobanteImpuestosRetencion [] { new ComprobanteImpuestosRetencion { Impuesto = c_Impuesto.IVA, Importe = item.RetentionTaxes, } }; cfd.Impuestos.TotalImpuestosRetenidos = cfd.Impuestos.Retenciones.Sum(x => x.Importe); cfd.Impuestos.TotalImpuestosRetenidosSpecified = true; } if (item.Relations.Any()) { cfd.CfdiRelacionados = new ComprobanteCfdiRelacionados { TipoRelacion = item.Type == FiscalDocumentType.AdvancePaymentsApplied ? c_TipoRelacion.AplicacionDeAnticipo : c_TipoRelacion.NotaDeCredito, CfdiRelacionado = new ComprobanteCfdiRelacionadosCfdiRelacionado [item.Relations.Count] }; i = 0; foreach (var relation in item.Relations) { cfd.CfdiRelacionados.CfdiRelacionado [i++] = new ComprobanteCfdiRelacionadosCfdiRelacionado { UUID = relation.Relation.StampId }; } } return(cfd); }
static Comprobante PaymentReceiptToCFDv33(FiscalDocument item) { var cer = item.Issuer.Certificates.SingleOrDefault(x => x.Id == item.IssuerCertificateNumber); var cfd = new Comprobante { Serie = item.Batch, Folio = item.Serial.ToString(), Fecha = item.Issued.GetValueOrDefault(), NoCertificado = item.IssuerCertificateNumber.PadLeft(20, '0'), Certificado = (cer == null ? null : SecurityHelpers.EncodeBase64(cer.CertificateData)), SubTotal = 0, Moneda = "XXX", Total = 0, TipoDeComprobante = c_TipoDeComprobante.Pago, LugarExpedicion = item.IssuedLocation, Emisor = new ComprobanteEmisor { Rfc = item.Issuer.Id, Nombre = item.IssuerName, RegimenFiscal = (c_RegimenFiscal)int.Parse(item.IssuerRegime.Id), }, Receptor = new ComprobanteReceptor { Rfc = item.Recipient, Nombre = item.RecipientName, UsoCFDI = c_UsoCFDI.PorDefinir }, Conceptos = new ComprobanteConcepto [] { new ComprobanteConcepto { ClaveProdServ = "84111506", Cantidad = 1, ClaveUnidad = "ACT", Descripcion = "Pago", ValorUnitario = 0, Importe = 0 } }, Complemento = new List <object> () }; var pagos = new Pagos { Pago = new PagosPago [] { new PagosPago { FechaPago = item.PaymentDate.GetValueOrDefault(), FormaDePagoP = (c_FormaPago)(int)item.PaymentMethod, MonedaP = item.Currency.GetDisplayName(), TipoCambioP = item.ExchangeRate, TipoCambioPSpecified = item.Currency != CurrencyCode.MXN, Monto = item.PaymentAmount, NumOperacion = string.IsNullOrWhiteSpace(item.PaymentReference) ? null : item.PaymentReference, NomBancoOrdExt = string.IsNullOrWhiteSpace(item.Reference) ? null : item.Reference, DoctoRelacionado = new PagosPagoDoctoRelacionado [item.Relations.Count] } } }; int i = 0; foreach (var relation in item.Relations) { pagos.Pago [0].DoctoRelacionado [i++] = new PagosPagoDoctoRelacionado { IdDocumento = relation.Relation.StampId, Serie = relation.Relation.Batch, Folio = relation.Relation.Serial.ToString(), MonedaDR = relation.Relation.Currency.GetDisplayName(), TipoCambioDR = relation.ExchangeRate, TipoCambioDRSpecified = relation.Relation.Currency != item.Currency, MetodoDePagoDR = c_MetodoPago.PagoEnParcialidadesODiferido, NumParcialidad = relation.Installment.ToString(), ImpSaldoAnt = relation.PreviousBalance, ImpSaldoAntSpecified = true, ImpPagado = relation.Amount, ImpPagadoSpecified = true, ImpSaldoInsoluto = relation.OutstandingBalance, ImpSaldoInsolutoSpecified = true }; } cfd.Complemento.Add(pagos); return(cfd); }
static Mictlanix.CFDv20.Comprobante InvoiceToCFDv20(FiscalDocument item) { var cer = item.Issuer.Certificates.SingleOrDefault (x => x.Id == item.IssuerCertificateNumber); var cfd = new Mictlanix.CFDv20.Comprobante { tipoDeComprobante = (Mictlanix.CFDv20.ComprobanteTipoDeComprobante)FDT2TDC (item.Type), noAprobacion = item.ApprovalNumber.ToString (), anoAprobacion = item.ApprovalYear.ToString (), noCertificado = item.IssuerCertificateNumber.ToString ().PadLeft (20, '0'), serie = item.Batch, folio = item.Serial.ToString (), fecha = item.Issued.GetValueOrDefault (), formaDePago = Resources.SinglePayment, certificado = (cer == null ? null : SecurityHelpers.EncodeBase64 (cer.CertificateData)), Emisor = new Mictlanix.CFDv20.ComprobanteEmisor { rfc = item.Issuer.Id, nombre = item.IssuerName, DomicilioFiscal = new Mictlanix.CFDv20.t_UbicacionFiscal { calle = item.IssuerAddress.Street, noExterior = item.IssuerAddress.ExteriorNumber, noInterior = item.IssuerAddress.InteriorNumber, colonia = item.IssuerAddress.Neighborhood, codigoPostal = item.IssuerAddress.PostalCode, localidad = item.IssuerAddress.Locality, municipio = item.IssuerAddress.Borough, estado = item.IssuerAddress.State, pais = item.IssuerAddress.Country } }, Receptor = new Mictlanix.CFDv20.ComprobanteReceptor { rfc = item.Recipient, nombre = item.RecipientName, Domicilio = new Mictlanix.CFDv20.t_Ubicacion { calle = item.RecipientAddress.Street, noExterior = item.RecipientAddress.ExteriorNumber, noInterior = item.RecipientAddress.InteriorNumber, colonia = item.RecipientAddress.Neighborhood, codigoPostal = item.RecipientAddress.PostalCode, localidad = item.RecipientAddress.Locality, municipio = item.RecipientAddress.Borough, estado = item.RecipientAddress.State, pais = item.RecipientAddress.Country } }, Conceptos = new Mictlanix.CFDv20.ComprobanteConcepto[item.Details.Count], Impuestos = new Mictlanix.CFDv20.ComprobanteImpuestos { Traslados = new Mictlanix.CFDv20.ComprobanteImpuestosTraslado[1] }, subTotal = item.Subtotal, total = item.Total, sello = item.IssuerDigitalSeal }; int i = 0; foreach (var detail in item.Details) { cfd.Conceptos [i++] = new Mictlanix.CFDv20.ComprobanteConcepto { cantidad = detail.Quantity, unidad = detail.UnitOfMeasurement, noIdentificacion = detail.ProductCode, descripcion = detail.ProductName, valorUnitario = detail.NetPrice, importe = detail.Subtotal }; } // TODO: VAT Summaries cfd.Impuestos.Traslados [0] = new Mictlanix.CFDv20.ComprobanteImpuestosTraslado { impuesto = Mictlanix.CFDv20.ComprobanteImpuestosTrasladoImpuesto.IVA, importe = item.Taxes, tasa = WebConfig.DefaultVAT * 100m }; return cfd; }
static Mictlanix.CFDv32.Comprobante ProFactStamp(FiscalDocument item) { var cfd = SignCFD (item); var cli = new ProFactClient (WebConfig.ProFactUser, WebConfig.ProFactUrl); var id = string.Format ("{0}-{1:D6}", WebConfig.ProFactCode, item.Id); var tfd = cli.Stamp (id, cfd); cfd.Complemento = new List<object> (); cfd.Complemento.Add (tfd); return cfd; }
// TODO: credentials per taxpayer static bool FiscoClicCancel(FiscalDocument item) { var cli = new FiscoClicClient (WebConfig.FiscoClicUser, WebConfig.FiscoClicPasswd, WebConfig.FiscoClicUrl); return cli.Cancel (item.Issuer.Id, item.StampId); }
public ActionResult New() { var store = WebConfig.Store; if (store == null) { return View ("InvalidStore"); } var item = new FiscalDocument { Issuer = store.Taxpayer }; return PartialView ("_Create", item); }
// TODO: credentials per taxpayer static Mictlanix.CFDv32.Comprobante ServisimStamp(FiscalDocument item) { var cfd = SignCFD (item); var cli = new ServisimClient (WebConfig.ServisimUser, WebConfig.ServisimPasswd, WebConfig.ServisimUrl); var id = string.Format ("{0}-{1:D6}", WebConfig.ServisimPartnerCode, item.Id); var timer = new System.Diagnostics.Stopwatch (); cli.EndRequest += (object sender, RequestEventArgs e) => { timer.Stop (); try { string text = "Time: " + timer.ElapsedMilliseconds + " ms\n" + "Request:\n" + e.Request + "\n" + "Response:\n" + e.Response + "\n"; string path = HttpContext.Current.Server.MapPath (string.Format (WebConfig.LogFilePattern, id, DateTime.Now)); File.WriteAllText (path, text); } catch { } }; timer.Start (); var tfd = cli.Stamp (id, cfd); cfd.Complemento = new List<object> (); cfd.Complemento.Add (tfd); return cfd; }
// TODO: credentials per taxpayer static bool ServisimCancel(FiscalDocument item) { var cli = new ServisimClient (WebConfig.ServisimUser, WebConfig.ServisimPasswd, WebConfig.ServisimUrl); return cli.Cancel (item.Issuer.Id, item.StampId); }
// TODO: credentials per taxpayer static Mictlanix.CFDv32.Comprobante FiscoClicStamp(FiscalDocument item) { var cfd = SignCFD (item); var cli = new FiscoClicClient (WebConfig.FiscoClicUser, WebConfig.FiscoClicPasswd, WebConfig.FiscoClicUrl); var tfd = cli.Stamp (cfd); cfd.Complemento = new List<object> (); cfd.Complemento.Add (tfd); return cfd; }
static Mictlanix.CFDv32.Comprobante InvoiceToCFDv32(FiscalDocument item) { var cer = item.Issuer.Certificates.SingleOrDefault (x => x.Id == item.IssuerCertificateNumber); var cfd = new CFDv32.Comprobante { tipoDeComprobante = (Mictlanix.CFDv32.ComprobanteTipoDeComprobante)FDT2TDC (item.Type), noCertificado = item.IssuerCertificateNumber.PadLeft (20, '0'), serie = item.Batch, folio = item.Serial.ToString (), fecha = item.Issued.GetValueOrDefault (), metodoDePago = item.PaymentMethod == PaymentMethod.NA ? item.PaymentMethod.GetDisplayName() : string.Format("{0:D2}", (int) item.PaymentMethod), NumCtaPago = item.PaymentReference, LugarExpedicion = item.IssuedLocation, subTotal = item.Subtotal, total = item.Total, Moneda = item.Currency.GetDisplayName (), TipoCambio = item.FormattedValueFor (x => x.ExchangeRate), sello = item.IssuerDigitalSeal, formaDePago = Resources.SinglePayment, certificado = (cer == null ? null : SecurityHelpers.EncodeBase64 (cer.CertificateData)), Emisor = new Mictlanix.CFDv32.ComprobanteEmisor { rfc = item.Issuer.Id, nombre = item.IssuerName, RegimenFiscal = new Mictlanix.CFDv32.ComprobanteEmisorRegimenFiscal [1] { new Mictlanix.CFDv32.ComprobanteEmisorRegimenFiscal { Regimen = item.IssuerRegime } }, DomicilioFiscal = (item.IssuerAddress == null) ? null : new Mictlanix.CFDv32.t_UbicacionFiscal { calle = item.IssuerAddress.Street, noExterior = item.IssuerAddress.ExteriorNumber, noInterior = item.IssuerAddress.InteriorNumber, colonia = item.IssuerAddress.Neighborhood, codigoPostal = item.IssuerAddress.PostalCode, localidad = item.IssuerAddress.Locality, municipio = item.IssuerAddress.Borough, estado = item.IssuerAddress.State, pais = item.IssuerAddress.Country }, ExpedidoEn = (item.IssuedAt == null) ? null : new Mictlanix.CFDv32.t_Ubicacion { calle = item.IssuedAt.Street, noExterior = item.IssuedAt.ExteriorNumber, noInterior = item.IssuedAt.InteriorNumber, colonia = item.IssuedAt.Neighborhood, codigoPostal = item.IssuedAt.PostalCode, localidad = item.IssuedAt.Locality, municipio = item.IssuedAt.Borough, estado = item.IssuedAt.State, pais = item.IssuedAt.Country } }, Receptor = new Mictlanix.CFDv32.ComprobanteReceptor { rfc = item.Recipient, nombre = item.RecipientName, Domicilio = (item.RecipientAddress == null) ? null : new Mictlanix.CFDv32.t_Ubicacion { calle = item.RecipientAddress.Street, noExterior = item.RecipientAddress.ExteriorNumber, noInterior = item.RecipientAddress.InteriorNumber, colonia = item.RecipientAddress.Neighborhood, codigoPostal = item.RecipientAddress.PostalCode, localidad = item.RecipientAddress.Locality, municipio = item.RecipientAddress.Borough, estado = item.RecipientAddress.State, pais = item.RecipientAddress.Country } }, Conceptos = new Mictlanix.CFDv32.ComprobanteConcepto [item.Details.Count], Impuestos = new Mictlanix.CFDv32.ComprobanteImpuestos { Traslados = new Mictlanix.CFDv32.ComprobanteImpuestosTraslado [1] } }; int i = 0; foreach (var detail in item.Details) { cfd.Conceptos [i++] = new Mictlanix.CFDv32.ComprobanteConcepto { cantidad = detail.Quantity, unidad = detail.UnitOfMeasurement, noIdentificacion = detail.ProductCode, descripcion = detail.ProductName, valorUnitario = detail.NetPrice, importe = detail.Subtotal }; } // TODO: VAT Summaries cfd.Impuestos.Traslados [0] = new Mictlanix.CFDv32.ComprobanteImpuestosTraslado { impuesto = Mictlanix.CFDv32.ComprobanteImpuestosTrasladoImpuesto.IVA, importe = item.Taxes, tasa = WebConfig.DefaultVAT * 100m }; cfd.Impuestos.totalImpuestosTrasladados = cfd.Impuestos.Traslados.Sum (x => x.importe); cfd.Impuestos.totalImpuestosTrasladadosSpecified = true; if (item.RetentionRate > 0m) { cfd.Impuestos.Retenciones = new Mictlanix.CFDv32.ComprobanteImpuestosRetencion[] { new Mictlanix.CFDv32.ComprobanteImpuestosRetencion { impuesto = Mictlanix.CFDv32.ComprobanteImpuestosRetencionImpuesto.IVA, importe = item.RetentionTaxes } }; cfd.Impuestos.totalImpuestosRetenidos = cfd.Impuestos.Retenciones.Sum (x => x.importe); cfd.Impuestos.totalImpuestosRetenidosSpecified = true; } return cfd; }
public static dynamic IssueCFD(FiscalDocument item) { if (item.Issuer.Scheme == FiscalScheme.CFD) { return SignCFD (item); } switch (item.Provider) { case FiscalCertificationProvider.FiscoClic: return FiscoClicStamp (item); case FiscalCertificationProvider.Servisim: return ServisimStamp (item); case FiscalCertificationProvider.ProFact: return ProFactStamp (item); default: return null; } }
static bool ProFactCancel(FiscalDocument item) { var cli = new ProFactClient (WebConfig.ProFactUser, WebConfig.ProFactUrl); return cli.Cancel (item.Issuer.Id, item.StampId); }
public ActionResult New(FiscalDocument item) { TaxpayerBatch batch = null; item.Issuer = TaxpayerIssuer.TryFind (item.IssuerId); item.Customer = Customer.TryFind (item.CustomerId); var recipient = TaxpayerRecipient.TryFind (item.Recipient); if (recipient != null) { item.Recipient = recipient.Id; item.RecipientName = recipient.Name; } if (item.Issuer != null) { batch = item.Issuer.Batches.FirstOrDefault (); } if (batch == null) { ModelState.AddModelError ("IssuerId", Resources.BatchRangeNotFound); } if (!ModelState.IsValid) { return PartialView ("_Create", item); } // Store item.Store = WebConfig.Store; item.IssuedAt = item.Store.Address; item.IssuedLocation = item.Store.Location; // Issuer item.IssuerName = item.Issuer.Name; item.IssuerRegime = item.Issuer.Regime; item.IssuerAddress = item.Issuer.Address; // Recipient item.RecipientAddress = recipient.Address; // Fiscal doc's info item.Batch = batch.Batch; item.Type = batch.Type; item.Currency = WebConfig.BaseCurrency; item.ExchangeRate = 1; item.PaymentMethod = PaymentMethod.Cash; item.PaymentReference = null; item.CreationTime = DateTime.Now; item.Creator = CurrentUser.Employee; item.ModificationTime = item.CreationTime; item.Updater = item.Creator; using (var scope = new TransactionScope ()) { item.CreateAndFlush (); } return PartialView ("_CreateSuccesful", new FiscalDocument { Id = item.Id }); }
public static dynamic SignCFD(FiscalDocument item) { var cfd = InvoiceToCFD (item); var cer = item.Issuer.Certificates.Single (x => x.Id == item.IssuerCertificateNumber); cfd.Sign (cer.KeyData, cer.KeyPassword); return cfd; }