public ActionResult DetailsPay() { Pagos pagos = new Pagos(); System.Text.StringBuilder strb = new System.Text.StringBuilder(); ViewBag.transactionState = Request["transactionState"].ToString(); foreach (var prop in pagos.GetType().GetProperties()) { if (Request[prop.Name] != null) { try { pagos.GetType().GetProperty(prop.Name).SetValue(pagos, Request[prop.Name]); } catch (Exception er) { strb.Append(er.Message); } } } ViewBag.Errors = strb.ToString(); if (((string)ViewBag.transactionState) == "4" || ((string)ViewBag.transactionState) == "APPROVED") { return(RedirectToAction("StartPhase", "Contratante", new { id = pagos.referenceCode })); } return(View(pagos)); }
public void Initialize(string tipoDeComprobante = "P", string version = "3.3", int decimalesItem = 6, int decimalesHeader = 2) { this.decimalesItem = decimalesItem; this.decimalesHeader = decimalesHeader; conceptos = new List <ComprobanteConcepto>(); cfdiRelacionados = new List <ComprobanteCfdiRelacionadosCfdiRelacionado>(); Comprobante = new Comprobante { Version = version, TipoDeComprobante = tipoDeComprobante }; //Complemento pago AddConceptoStandard(); AddHeaderStandard(); pagosElemento = new Pagos(); pagos = new List <PagosPago>(); doctosRelacionados = new List <PagosPagoDoctoRelacionado>(); xmlComplemento = new XmlDocument(); xmlSerializer = new XmlSerializer(pagosElemento.GetType()); xmlNameSpacePago = new XmlSerializerNamespaces(); xmlNameSpacePago.Add("pago10", "http://www.sat.gob.mx/Pagos"); Comprobante.Complemento = new ComprobanteComplemento[1]; Comprobante.Complemento[0] = new ComprobanteComplemento(); }
public double generarComplementoPago(decimal monto, string ctaEmisor, string ctaReceptor, string folio, string serie, string uuid, string moneda, string mPago, string rfcReceptor, int numPago, decimal saldoAnt, DataGridView dg) { monto = 0; Pagos oPagos = new Pagos(); List <PagosPago> lstPagos = new List <PagosPago>(); PagosPago oPago = new PagosPago(); oPago.MonedaP = c_Moneda.MXN; oPago.FormaDePagoP = mPago; oPago.FechaPago = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"); int i = 0; PagosPagoDoctoRelacionado[] relacionado = new PagosPagoDoctoRelacionado[dg.Rows.Count]; foreach (DataGridViewRow r in dg.Rows) { relacionado[i] = new PagosPagoDoctoRelacionado(); relacionado[i].IdDocumento = r.Cells[0].Value.ToString(); relacionado[i].Serie = r.Cells[3].Value.ToString(); relacionado[i].Folio = r.Cells[4].Value.ToString(); relacionado[i].MonedaDR = c_Moneda.MXN; relacionado[i].MetodoDePagoDR = c_MetodoPago.PPD; relacionado[i].NumParcialidad = "1"; monto += Convert.ToDecimal(String.Format("{0:#.00}", Convert.ToDouble(r.Cells[2].Value))); relacionado[i].ImpSaldoAnt = Convert.ToDecimal(String.Format("{0:#.00}", Convert.ToDouble(r.Cells[2].Value))); //Monto de Factura relacionado[i].ImpSaldoAntSpecified = true; relacionado[i].ImpPagado = Convert.ToDecimal(String.Format("{0:#.00}", Convert.ToDouble(r.Cells[2].Value))); //Monto de factura relacionado[i].ImpPagadoSpecified = true; relacionado[i].ImpSaldoInsoluto = Convert.ToDecimal(String.Format("{0:#.00}", Convert.ToDouble(0))); relacionado[i].ImpSaldoInsolutoSpecified = true; i++; oPago.DoctoRelacionado = relacionado; } oPago.Monto = Convert.ToDecimal(String.Format("{0:#.00}", monto)); lstPagos.Add(oPago); oPagos.Pago = lstPagos.ToArray(); Comprobante comprobante = new Comprobante(); comprobante.Complemento = new ComprobanteComplemento[1]; comprobante.Complemento[0] = new ComprobanteComplemento(); XmlDocument docPago = new XmlDocument(); XmlSerializerNamespaces xmlNameSpacePago = new XmlSerializerNamespaces(); xmlNameSpacePago.Add("pago10", "http://www.sat.gob.mx/Pagos"); using (XmlWriter writer = docPago.CreateNavigator().AppendChild()) { new XmlSerializer(oPagos.GetType()).Serialize(writer, oPagos, xmlNameSpacePago); } comprobante.Receptor = new ComprobanteReceptor(); comprobante.Receptor.UsoCFDI = "P01"; comprobante.Receptor.Rfc = rfcReceptor; comprobante.Conceptos = new ComprobanteConcepto[1]; comprobante.Conceptos[0] = new ComprobanteConcepto(); comprobante.Conceptos[0].Cantidad = 1; comprobante.Conceptos[0].ClaveProdServ = "84111506"; comprobante.Conceptos[0].ClaveUnidad = "ACT"; comprobante.Conceptos[0].Descripcion = "Pago"; comprobante.Conceptos[0].ValorUnitario = 0; comprobante.Conceptos[0].Importe = 0; comprobante.Sello = ""; comprobante.Fecha = Convert.ToDateTime(DateTime.Now.ToString("s")); comprobante.NoCertificado = ConfigurationManager.AppSettings["noCertificado"]; X509Certificate2 certEmisor = new X509Certificate2(); byte[] byteCertData = ReadFile(ConfigurationManager.AppSettings["rutaCer"]); certEmisor.Import(byteCertData); comprobante.Certificado = Convert.ToBase64String(certEmisor.GetRawCertData()); //comprobante.TimbreFiscalDigital = null; comprobante.Complemento = new ComprobanteComplemento[1]; comprobante.Complemento[0] = new ComprobanteComplemento(); comprobante.Complemento[0].Any = new XmlElement[2]; comprobante.Complemento[0].Any[0] = docPago.DocumentElement; //var dom = new XmlDocument(); //XmlNamespaceManager nsmgr = new XmlNamespaceManager(dom.NameTable); //nsmgr.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital"); //var contact = dom.CreateElement("tfd:TimbreFiscalDigital", "http://www.sat.gob.mx/TimbreFiscalDigital"); //dom.AppendChild(contact); //comprobante.Complemento[0].Any[1] = dom.DocumentElement; comprobante.Impuestos = null; comprobante.Total = 0; comprobante.SubTotal = 0; comprobante.Moneda = c_Moneda.XXX; comprobante.FormaPagoSpecified = false; comprobante.TipoDeComprobante = c_TipoDeComprobante.P; comprobante.LugarExpedicion = ConfigurationManager.AppSettings["LugarExpedicion"]; comprobante.Emisor = new ComprobanteEmisor(); comprobante.Emisor.Rfc = ConfigurationManager.AppSettings["rfcEmisor"]; comprobante.Emisor.RegimenFiscal = c_RegimenFiscal.Item612; double ultimoFolio = 0; if (CreateXML(comprobante, mPago, serie, folio)) { ultimoFolio = guardarPago(uuid, c_MetodoPago.PPD, 0m, Convert.ToDecimal(String.Format("{0:#.00}", saldoAnt)), Convert.ToDecimal(String.Format("{0:#.00}", saldoAnt - monto)), Convert.ToDecimal(String.Format("{0:#.00}", monto)), Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss")), Convert.ToDecimal(String.Format("{0:#.00}", monto)), mPago, dg); } return(ultimoFolio); }