コード例 #1
0
        public GTDocumento NotaCDXml(FacturaElectronicaGT Header,
                                     DataTable Detalle,
                                     ResponseApi Api,
                                     string Motivo)
        {
            DireccionEmisor direccionEmisor = new DireccionEmisor
            {
                Direccion    = Header.DireccionEmisor,
                CodigoPostal = Header.CodigoPostalEmisor,
                Municipio    = Header.MunicipioEmisor,
                Departamento = Header.DepartamentoEmisor,
                Pais         = Header.PaisEmisor,
            };

            DireccionReceptor direccionReceptor = new DireccionReceptor
            {
                Direccion    = Header.DireccionReceptor,
                CodigoPostal = Header.CodigoPostalReceptor,
                Municipio    = Header.MunicipioReceptor,
                Departamento = Header.DepartamentoReceptor,
                Pais         = Header.PaisReceptor,
            };

            Totales totales = new Totales
            {
                TotalImpuestos = new TotalImpuestos
                {
                    TotalImpuesto = new TotalImpuesto {
                        NombreCorto = "IVA", TotalMontoImpuesto = Header.TotalMontoImpuesto.ToString()
                    },
                },
                GranTotal = Header.GranTotal.ToString(),
            };

            List <Item>     item     = new List <Item>();
            List <Impuesto> impuesto = new List <Impuesto>();

            for (int i = 0; i <= Detalle.Rows.Count - 1; i++)
            {
                Impuestos impuestos = new Impuestos
                {
                    Impuesto = new Impuesto
                    {
                        NombreCorto          = "IVA",
                        CodigoUnidadGravable = Convert.ToDouble(Detalle.Rows[i]["Impuesto"]) == 0.00 ? "2" : "1",
                        MontoGravable        = Detalle.Rows[i]["Gravable"].ToString(),
                        MontoImpuesto        = Detalle.Rows[i]["Impuesto"].ToString(),
                    }
                };

                item.Add(new Item
                {
                    BienOServicio  = Detalle.Rows[i]["Tipo"].ToString().Equals("P") ? "B" : "S",
                    Cantidad       = Detalle.Rows[i]["Cantidad"].ToString(),
                    NumeroLinea    = (i + 1).ToString(),
                    UnidadMedida   = Detalle.Rows[i]["Unidad"].ToString(),
                    Descripcion    = Detalle.Rows[i]["Descripcion"].ToString(),
                    PrecioUnitario = Detalle.Rows[i]["Unitario"].ToString(),
                    Precio         = Detalle.Rows[i]["Precio"].ToString(),
                    Descuento      = Detalle.Rows[i]["Descuento"].ToString(),
                    Impuesto       = impuestos,
                    Total          = Detalle.Rows[i]["Total"].ToString(),
                });
            }

            Items items = new Items
            {
                Item = item,
            };

            ReferenciasNota referencia = new ReferenciasNota
            {
                Cno = "http://www.sat.gob.gt/face2/ComplementoReferenciaNota/0.1.0",
                FechaEmisionDocumentoOrigen = Api.fecha.Substring(0, 10),
                MotivoAjuste = Motivo,
                NumeroAutorizacionDocumentoOrigen = Api.uuid,
                NumeroDocumentoOrigen             = Api.numero,
                SerieDocumentoOrigen = Api.serie,
                Version        = "0.0",
                SchemaLocation = Header.SchemaLocation
            };

            Complemento complemento = new Complemento
            {
                IDComplemento     = "Notas",
                NombreComplemento = "Notas",
                URIComplemento    = "http://www.sat.gob.gt/fel/notas.xsd",
                ReferenciasNota   = referencia
            };

            Complementos complementos = new Complementos
            {
                Complemento = complemento
            };

            DatosEmision datosEmision = new DatosEmision
            {
                ID             = "DatosEmision",
                DatosGenerales = new DatosGenerales
                {
                    CodigoMoneda     = Header.CodigoMoneda,
                    FechaHoraEmision = Header.FechaHoraEmision,
                    Tipo             = Header.Tipo,
                },
                Emisor = new Emisor
                {
                    AfiliacionIVA         = Header.AfiliacionIVA,
                    CodigoEstablecimiento = Header.CodigoEstablecimiento,
                    CorreoEmisor          = Header.CorreoEmisor,
                    NITEmisor             = Header.NITEmisor,
                    NombreComercial       = Header.NombreComercial,
                    NombreEmisor          = Header.NombreEmisor,
                    DireccionEmisor       = direccionEmisor,
                },
                Receptor = new Receptor
                {
                    CorreoReceptor    = Header.CorreoReceptor,
                    IDReceptor        = Header.IDReceptor,
                    NombreReceptor    = Header.NombreReceptor,
                    DireccionReceptor = direccionReceptor,
                },
                Items        = items,
                Totales      = totales,
                Complementos = complementos,
            };

            DTE dte = new DTE
            {
                ID           = "DatosCertificados",
                DatosEmision = datosEmision,
            };

            SAT sat = new SAT
            {
                ClaseDocumento = "dte",
                DTE            = dte,
            };

            return(new GTDocumento
            {
                SAT = sat,
            });
        }
コード例 #2
0
        public GTDocumento FacturaXml(FacturaElectronicaGT Header, DataTable Detalle)
        {
            DireccionEmisor direccionEmisor = new DireccionEmisor
            {
                Direccion    = Header.DireccionEmisor,
                CodigoPostal = Header.CodigoPostalEmisor,
                Municipio    = Header.MunicipioEmisor,
                Departamento = Header.DepartamentoEmisor,
                Pais         = Header.PaisEmisor,
            };

            DireccionReceptor direccionReceptor = new DireccionReceptor
            {
                Direccion    = Header.DireccionReceptor,
                CodigoPostal = Header.CodigoPostalReceptor,
                Municipio    = Header.MunicipioReceptor,
                Departamento = Header.DepartamentoReceptor,
                Pais         = Header.PaisReceptor,
            };

            Frases frases = new Frases();

            frases.Frase = new List <Frase> {
                new Frase {
                    CodigoEscenario = Header.CodigoEscenario, TipoFrase = Header.TipoFrase
                }
            };

            TotalImpuestos TotalImpuestos = new TotalImpuestos
            {
                TotalImpuesto = new TotalImpuesto {
                    NombreCorto = "IVA", TotalMontoImpuesto = Header.TotalMontoImpuesto.ToString()
                },
            };

            Totales totales = new Totales
            {
                TotalImpuestos = new TotalImpuestos
                {
                    TotalImpuesto = new TotalImpuesto {
                        NombreCorto = "IVA", TotalMontoImpuesto = Header.TotalMontoImpuesto.ToString()
                    },
                },
                GranTotal = Header.GranTotal.ToString(),
            };

            List <Item>     item     = new List <Item>();
            List <Impuesto> impuesto = new List <Impuesto>();

            for (int i = 0; i <= Detalle.Rows.Count - 1; i++)
            {
                Impuestos impuestos = new Impuestos
                {
                    Impuesto = new Impuesto {
                        NombreCorto          = "IVA",
                        CodigoUnidadGravable = "1",
                        MontoGravable        = Detalle.Rows[i]["Gravable"].ToString(),
                        MontoImpuesto        = Detalle.Rows[i]["Impuesto"].ToString(),
                    }
                };

                item.Add(new Item
                {
                    BienOServicio  = Detalle.Rows[i]["Tipo"].ToString().Equals("P") ? "B" : "S",
                    Cantidad       = Detalle.Rows[i]["Cantidad"].ToString(),
                    NumeroLinea    = (i + 1).ToString(),
                    UnidadMedida   = Detalle.Rows[i]["Unidad"].ToString(),
                    Descripcion    = Detalle.Rows[i]["Descripcion"].ToString(),
                    PrecioUnitario = Detalle.Rows[i]["Unitario"].ToString(),
                    Precio         = Detalle.Rows[i]["Precio"].ToString(),
                    Descuento      = Detalle.Rows[i]["Descuento"].ToString(),
                    Impuesto       = impuestos,
                    Total          = Detalle.Rows[i]["Total"].ToString(),
                });
            }

            Items items = new Items
            {
                Item = item,
            };

            //Cuando la factura es de credito se agrega el complemento.
            Abono abono = new Abono
            {
                NumeroAbono      = "1",
                FechaVencimiento = Header.Vencimiento,
                MontoAbono       = Header.GranTotal.ToString(),
            };

            AbonosFacturaCambiaria abonoFC = new AbonosFacturaCambiaria
            {
                Cfc            = "http://www.sat.gob.gt/dte/fel/CompCambiaria/0.1.0",
                Version        = "1",
                SchemaLocation = Header.SchemaLocation,
                Abono          = abono,
            };

            Complemento complemento = new Complemento
            {
                IDComplemento          = "Cambiaria",
                NombreComplemento      = "Cambiaria",
                URIComplemento         = "http://www.sat.gob.gt/fel/cambiaria.xsd",
                AbonosFacturaCambiaria = abonoFC,
            };

            Complementos complementos = new Complementos
            {
                Complemento = complemento
            };

            DatosEmision datosEmision = new DatosEmision
            {
                ID             = "DatosEmision",
                DatosGenerales = new DatosGenerales
                {
                    CodigoMoneda     = Header.CodigoMoneda,
                    FechaHoraEmision = Header.FechaHoraEmision,
                    Tipo             = Header.Tipo,
                },
                Emisor = new Emisor
                {
                    AfiliacionIVA         = Header.AfiliacionIVA,
                    CodigoEstablecimiento = Header.CodigoEstablecimiento,
                    CorreoEmisor          = Header.CorreoEmisor,
                    NITEmisor             = Header.NITEmisor,
                    NombreComercial       = Header.NombreComercial,
                    NombreEmisor          = Header.NombreEmisor,
                    DireccionEmisor       = direccionEmisor,
                },
                Receptor = new Receptor
                {
                    CorreoReceptor    = Header.CorreoReceptor,
                    IDReceptor        = Header.IDReceptor,
                    NombreReceptor    = Header.NombreReceptor,
                    DireccionReceptor = direccionReceptor,
                },
                Frases       = frases,
                Items        = items,
                Totales      = totales,
                Complementos = complementos
            };

            DTE dte = new DTE
            {
                ID           = "DatosCertificados",
                DatosEmision = datosEmision,
            };

            SAT sat = new SAT
            {
                ClaseDocumento = "dte",
                DTE            = dte,
                Adenda         = new Adenda
                {
                    Codigo_cliente = Header.Codigo_cliente,
                    Observaciones  = Header.Observaciones,
                    Lugar          = Header.Lugar,
                    Vendedor       = Header.Vendedor,
                    Forma_pago     = Header.Forma_pago,
                    Vencimiento    = Header.Vencimiento,
                    TCambio        = Header.TCambio,
                }
            };

            return(new GTDocumento
            {
                SAT = sat,
            });
        }
コード例 #3
0
        public GTDocumento FExportacionXml(FacturaElectronicaGT Header, DataTable Detalle)
        {
            DireccionEmisor direccionEmisor = new DireccionEmisor
            {
                Direccion    = Header.DireccionEmisor,
                CodigoPostal = Header.CodigoPostalEmisor,
                Municipio    = Header.MunicipioEmisor,
                Departamento = Header.DepartamentoEmisor,
                Pais         = Header.PaisEmisor,
            };

            DireccionReceptor direccionReceptor = new DireccionReceptor
            {
                Direccion    = Header.DireccionReceptor,
                CodigoPostal = Header.CodigoPostalReceptor,
                Municipio    = Header.MunicipioReceptor,
                Departamento = Header.DepartamentoReceptor,
                Pais         = Header.PaisReceptor,
            };

            Frases frases = new Frases();

            //SI ES FACTURA DE EXPORTACION SE AGREGAR 3 LINEAS DE FRASES.
            if (Header.Exp.Equals("SI"))
            {
                frases.Frase = new List <Frase> {
                    new Frase {
                        CodigoEscenario = Header.CodigoEscenario, TipoFrase = Header.TipoFrase
                    },
                    new Frase {
                        CodigoEscenario = Header.CodigoEscenario, TipoFrase = "4"
                    }
                };
            }
            else
            {
                frases.Frase = new List <Frase> {
                    new Frase {
                        CodigoEscenario = Header.CodigoEscenario, TipoFrase = Header.TipoFrase
                    }
                };
            }

            TotalImpuestos TotalImpuestos = new TotalImpuestos
            {
                TotalImpuesto = new TotalImpuesto {
                    NombreCorto = "IVA", TotalMontoImpuesto = Header.TotalMontoImpuesto.ToString()
                },
            };

            Totales totales = new Totales
            {
                TotalImpuestos = new TotalImpuestos
                {
                    TotalImpuesto = new TotalImpuesto {
                        NombreCorto = "IVA", TotalMontoImpuesto = Header.TotalMontoImpuesto.ToString()
                    },
                },
                GranTotal = Header.GranTotal.ToString(),
            };

            List <Item>     item     = new List <Item>();
            List <Impuesto> impuesto = new List <Impuesto>();

            for (int i = 0; i <= Detalle.Rows.Count - 1; i++)
            {
                Impuestos impuestos = new Impuestos
                {
                    Impuesto = new Impuesto
                    {
                        NombreCorto          = "IVA",
                        CodigoUnidadGravable = Convert.ToDecimal(Detalle.Rows[i]["Impuesto"].ToString()) > 0 ?  "1" : "2",
                        MontoGravable        = Detalle.Rows[i]["Gravable"].ToString(),
                        MontoImpuesto        = Detalle.Rows[i]["Impuesto"].ToString(),
                    }
                };

                item.Add(new Item
                {
                    BienOServicio  = Detalle.Rows[i]["Tipo"].ToString().Equals("P") ? "B" : "S",
                    Cantidad       = Detalle.Rows[i]["Cantidad"].ToString(),
                    NumeroLinea    = (i + 1).ToString(),
                    UnidadMedida   = Detalle.Rows[i]["Unidad"].ToString(),
                    Descripcion    = Detalle.Rows[i]["Descripcion"].ToString(),
                    PrecioUnitario = Detalle.Rows[i]["Unitario"].ToString(),
                    Precio         = Detalle.Rows[i]["Precio"].ToString(),
                    Descuento      = Detalle.Rows[i]["Descuento"].ToString(),
                    Impuesto       = impuestos,
                    Total          = Detalle.Rows[i]["Total"].ToString(),
                });
            }

            Items items = new Items
            {
                Item = item,
            };

            //Cuando la factura es de credito se agrega el complemento.
            XmlFormatoFactura.Abono abono = new XmlFormatoFactura.Abono
            {
                NumeroAbono      = "1",
                FechaVencimiento = Header.Vencimiento,
                MontoAbono       = Header.GranTotal.ToString(),
            };

            XmlFormatoFactura.AbonosFacturaCambiaria abonoFC = new XmlFormatoFactura.AbonosFacturaCambiaria
            {
                Cfc            = "http://www.sat.gob.gt/dte/fel/CompCambiaria/0.1.0",
                Version        = "1",
                SchemaLocation = Header.SchemaLocation,
                Abono          = abono,
            };

            //Complemento complemento = new Complemento
            //{
            //    IDComplemento = "Cambiaria",
            //    NombreComplemento = "Cambiaria",
            //    URIComplemento = "http://www.sat.gob.gt/fel/cambiaria.xsd",
            //    AbonosFacturaCambiaria = abonoFC,
            //};

            Exportacion exportacion = new Exportacion
            {
                Cex            = "http://www.sat.gob.gt/face2/ComplementoExportaciones/0.1.0",
                Version        = "1",
                SchemaLocation = Header.SchemaLocation,
                NombreConsignatarioODestinatario    = Header.NombreConsignatarioODestinatario,
                DireccionConsignatarioODestinatario = Header.DireccionConsignatarioODestinatario,
                CodigoConsignatarioODestinatario    = Header.CodigoConsignatarioODestinatario,
                NombreComprador    = Header.NombreComprador,
                DireccionComprador = Header.DireccionComprador,
                CodigoComprador    = Header.CodigoComprador,
                OtraReferencia     = Header.OtraReferencia,
                INCOTERM           = Header.INCOTERM,
                NombreExportador   = Header.NombreExportador,
                CodigoExportador   = Header.CodigoExportador,
            };

            //Complemento complemento = new Complemento
            //{
            //    IDComplemento = "Exportacion",
            //    NombreComplemento = "Exportacion",
            //    URIComplemento = "http://www.sat.gob.gt/fel/exportacion.xsd",
            //    Exportacion = exportacion,
            //};

            List <Complemento> complementoList = new List <Complemento> {
                new Complemento {
                    IDComplemento     = "Exportacion",
                    NombreComplemento = "Exportacion",
                    URIComplemento    = "http://www.sat.gob.gt/fel/exportacion.xsd",
                    Exportacion       = exportacion,
                },
                new Complemento {
                    IDComplemento          = "Cambiaria",
                    NombreComplemento      = "Cambiaria",
                    URIComplemento         = "http://www.sat.gob.gt/fel/cambiaria.xsd",
                    AbonosFacturaCambiaria = abonoFC,
                },
            };

            Complementos complementos = new Complementos
            {
                //Complemento = complemento
                Complemento = complementoList
            };

            DatosEmision datosEmision = new DatosEmision
            {
                ID             = "DatosEmision",
                DatosGenerales = new DatosGenerales
                {
                    CodigoMoneda     = Header.CodigoMoneda,
                    FechaHoraEmision = Header.FechaHoraEmision,
                    Tipo             = Header.Tipo,
                    Exp = Header.Exp,
                },
                Emisor = new Emisor
                {
                    AfiliacionIVA         = Header.AfiliacionIVA,
                    CodigoEstablecimiento = Header.CodigoEstablecimiento,
                    CorreoEmisor          = Header.CorreoEmisor,
                    NITEmisor             = Header.NITEmisor,
                    NombreComercial       = Header.NombreComercial,
                    NombreEmisor          = Header.NombreEmisor,
                    DireccionEmisor       = direccionEmisor,
                },

                Receptor = new Receptor
                {
                    DireccionReceptor = direccionReceptor,
                    CorreoReceptor    = Header.CorreoReceptor,
                    IDReceptor        = Header.IDReceptor,
                    NombreReceptor    = Header.NombreReceptor,
                },

                Frases       = frases,
                Items        = items,
                Totales      = totales,
                Complementos = complementos,
            };

            DTE dte = new DTE
            {
                ID           = "DatosCertificados",
                DatosEmision = datosEmision,
            };

            SAT sat = new SAT
            {
                ClaseDocumento = "dte",
                DTE            = dte,
            };

            return(new GTDocumento
            {
                SAT = sat,
            });
        }
コード例 #4
0
        public async void EnvioDatosFactura(
            string Factura,
            string Tipo,
            int Empresa)

        {
            string res = string.Empty;

            try
            {
                //Obtener Encabezado y Detalle de la Factura
                objHeader       = db.Header(Factura, Tipo, Empresa);
                Detalle         = db.Detalle(Factura, Empresa);
                objCredenciales = DAL.Credenciales(Empresa);

                if (objHeader is null)
                {
                    iError = "El SP: sp_sel_FacturaElectronicaGTDatos no ha devuelto ningun valor.";
                    return;
                }

                // Covertir la Clase en XML
                XmlSerializer serializador = new XmlSerializer(typeof(GTDocumento));
                StringBuilder sb           = new StringBuilder();
                TextWriter    tw           = new StringWriter(sb);
                serializador.Serialize(tw, new CrearXmlFactura().FacturaXml(objHeader, Detalle));
                tw.Close();
                xml = sb.ToString();

                // Limpiar XML para que sea igual al formato de Hacienda
                xml = xml.Substring(198, xml.Length - 198);
                xml = xml.Replace("<", "<dte:");
                xml = xml.Replace("<dte:/", "</dte:");
                xml = xml.Replace("<dte:cfc", "<cfc");
                xml = xml.Replace("</dte:cfc", "</cfc");
                xml = xml.Replace("<dte:AbonosFacturaCambiaria", "<cfc:AbonosFacturaCambiaria");
                xml = xml.Replace("</dte:AbonosFacturaCambiaria>", "</cfc:AbonosFacturaCambiaria>");

                xml = $"{objHeader.EncabezadoFE}{xml}";

                HttpClient client = new HttpClient();
                client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/xml"));

                client.DefaultRequestHeaders.Add("UsuarioFirma", objCredenciales.usuarioFirma);
                client.DefaultRequestHeaders.Add("LlaveFirma", objCredenciales.tokenFirma);
                client.DefaultRequestHeaders.Add("UsuarioApi", objCredenciales.usuaarioApi);
                client.DefaultRequestHeaders.Add("LlaveApi", objCredenciales.llaveApi);
                client.DefaultRequestHeaders.Add("Identificador", objHeader.Consecutivo);

                StringContent oString = new StringContent(xml);

                HttpResponseMessage response = client.PostAsync(new Uri(objCredenciales.urlApi), oString).Result;
                res = await response.Content.ReadAsStringAsync();

                responseApi = JsonConvert.DeserializeObject <ResponseApi>(res);

                //Actualizar el resultado en Tabla
                db.Actualizar(
                    objHeader.Id,
                    xml,
                    responseApi.numero,
                    responseApi.resultado ? "aceptado" : "rechazado",
                    res,
                    responseApi.xml_certificado,
                    Empresa);

                iError = "Ok";
            }
            catch (Exception ex)
            {
                iError = ex.Message;
                //Actualizar el resultado en Tabla en caso de Error.
                db.Actualizar(
                    objHeader.Id,
                    xml,
                    string.Empty,
                    "sin-respuesta",
                    res.Length == 0 ? iError : res,
                    string.Empty,
                    Empresa);
            }
        }