示例#1
0
        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));
        }
示例#2
0
        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();
        }
示例#3
0
        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);
        }