Exemple #1
0
        /// <summary>
        /// Agrega un pago tanto el pago como el doc relacionado es en variables
        /// El metodo se usa cuando el pago corresponde a una sola factura (doc relacionado)
        /// </summary>
        /// <param name="fechaP"></param>
        /// <param name="formaPagoP"></param>
        /// <param name="importeP"></param>
        /// <param name="monedaP"></param>
        /// <param name="tipoCambioP"></param>
        /// <param name="uuidDR"></param>
        /// <param name="monedaDR"></param>
        /// <param name="metodoPagoDR"></param>
        public void AddPago(
            DateTime fechaP,
            string formaPagoP,
            decimal importeP,
            string monedaP,
            decimal tipoCambioP,
            string uuidDR,
            string monedaDR,
            string metodoPagoDR)
        {
            pago                      = new PagosPago();
            pago.FechaPago            = fechaP.ToString("yyyy-MM-ddTHH:mm:ss");
            pago.FormaDePagoP         = formaPagoP;
            pago.Monto                = Math.Round(importeP, decimalesItem, MidpointRounding.AwayFromZero);
            pago.MonedaP              = monedaP;
            pago.TipoCambioP          = tipoCambioP;
            pago.TipoCambioPSpecified = pago.TipoCambioP != 1;


            doctoRelacionado                = new PagosPagoDoctoRelacionado();
            doctoRelacionado.IdDocumento    = uuidDR;
            doctoRelacionado.MonedaDR       = monedaDR;
            doctoRelacionado.MetodoDePagoDR = metodoPagoDR;

            pago.DoctoRelacionado = doctosRelacionados.ToArray();
            pagos.Add(pago);
        }
        /// <summary>
        /// Obtener información Nodo Pagos Pago
        /// </summary>
        /// <param name="idComprobante">ID Comprobante</param>
        /// <returns>Lista modelo PagosPago</returns>
        public async Task <List <PagosPago> > ObtenerNodoPagosPago(string idComprobante)
        {
            List <PagosPago> respuesta = new List <PagosPago>();

            try
            {
                var resultado = await _baseDatos.SelectAsync <NodoPago>(_queryNodoPago + idComprobante);

                if ((resultado?.Any() ?? false))
                {
                    foreach (var dato in resultado)
                    {
                        var pago = new PagosPago();

                        pago.FechaPago = dato.fechaPago.ToString("yyyy-MM-ddTHH:mm:ss");
                        if (dato.formaDePagoP == "1" || dato.formaDePagoP == "2" || dato.formaDePagoP == "3" || dato.formaDePagoP == "4" || dato.formaDePagoP == "28")
                        {
                            pago.FormaDePagoP = String.Format("{0:00}", Int32.Parse(dato.formaDePagoP));
                        }
                        else
                        {
                            pago.FormaDePagoP = String.Format("{0:00}", Int32.Parse("3"));
                        }
                        pago.MonedaP = dato.monedaP;
                        if (dato.monedaP != "MXN")
                        {
                            pago.TipoCambioP          = Convert.ToDecimal(dato.tipoCambioP);
                            pago.TipoCambioPSpecified = dato.tipoCambioP > 0 ? true : false;
                        }
                        pago.Monto           = TruncarDecimal(dato.monto, dato.decimales, true);
                        pago.NumOperacion    = !string.IsNullOrEmpty(dato.numOperacion) ? dato.numOperacion : null;
                        pago.RfcEmisorCtaOrd = !string.IsNullOrEmpty(dato.rfcEmisorCtaOrd) ? dato.rfcEmisorCtaOrd : null;
                        pago.NomBancoOrdExt  = !string.IsNullOrEmpty(dato.nomBancoOrdExt) ? dato.nomBancoOrdExt : null;
                        pago.CtaOrdenante    = !string.IsNullOrEmpty(dato.ctaOrdenante) ? dato.ctaOrdenante : null;
                        pago.RfcEmisorCtaBen = !string.IsNullOrEmpty(dato.rfcEmisorCtaBen) ? dato.rfcEmisorCtaBen : null;
                        pago.CtaBeneficiario = !string.IsNullOrEmpty(dato.ctaBeneficiario) ? dato.ctaBeneficiario : null;

                        var pagoRelacionado = await ObtenerNodoPagosPagoDocRelacionado(dato.id.ToString(), dato.monedaP);

                        pago.DoctoRelacionado = pagoRelacionado != null?pagoRelacionado.ToArray() : null;

                        respuesta.Add(pago);
                    }
                }
                else
                {
                    respuesta = null;
                }
            }
            catch
            {
                respuesta = null;
            }

            return(respuesta);
        }
Exemple #3
0
 /// <summary>
 /// Agrega un pago , recibe un objeto pago y una lista de docs relacionados
 /// </summary>
 /// <param name="pago"></param>
 /// <param name="doctoRelacionados"></param>
 public void AddPago(PagosPago pago, List <PagosPagoDoctoRelacionado> doctoRelacionados)
 {
     pago.DoctoRelacionado = doctosRelacionados.ToArray();
     pago.Monto            = Math.Round(pago.Monto, decimalesItem, MidpointRounding.AwayFromZero);
     pagos.Add(pago);
 }
Exemple #4
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);
        }