Ejemplo n.º 1
0
        public List <comprobanteRetencion> GenerarXmlRetencion(DateTime FechaIni, DateTime FechaFin, string ConexionDBCliente, string OconEfirm, string FormatoFechaSRI, string formatoFechaDB)
        {
            #region conexion de base detos efrim
            try
            {
                using (SqlConnection co = new SqlConnection(OconEfirm))
                {
                    co.Open();
                    sql = "select RUC,RAZONSOCIAL,NOMBRECOMERCIAL,DIRMATRIZ,CONTRIBUYENTEESPECIAL from tb_Empresa where RUC ='0992496797001'";
                    SqlCommand    cmd    = new SqlCommand(sql, co);
                    SqlDataReader reader = cmd.ExecuteReader();
                    if (reader.Read())
                    {
                        ruc        = reader.GetString(0);
                        Rz         = reader.GetString(1);
                        Nomcom     = reader.GetString(2);
                        direccion  = reader.GetString(3);
                        contspecia = reader.GetString(4);
                    }
                    co.Close();
                    reader.Close();
                }
            }
            catch (Exception ex)
            {
            }
            #endregion
            // formato fecha

            string sFi, sFf;
            sFi = string.Format(formatoFechaDB, FechaIni);
            sFf = string.Format(formatoFechaDB, FechaFin);



            try
            {
                List <comprobanteRetencion> lista = new List <comprobanteRetencion>();
                using (SqlConnection conexion = new SqlConnection(ConexionDBCliente))
                {
                    conexion.Open();
                    string        sqlcabFact = "select * from ELECTRONICA_RET_CABECERA  where fechaEmision between '" + sFi + "' and '" + sFf + "'";
                    SqlCommand    cmdcabRet  = new SqlCommand(sqlcabFact, conexion);
                    SqlDataReader dtrCabRet  = cmdcabRet.ExecuteReader();
                    while (dtrCabRet.Read())
                    {
                        try
                        {
                            comprobanteRetencion myObjectRete = new comprobanteRetencion();
                            myObjectRete.id                                   = comprobanteRetencionID.comprobante;
                            myObjectRete.version                              = "1.0.0";
                            myObjectRete.idSpecified                          = true;
                            myObjectRete.infoTributaria                       = new infoTributaria();
                            myObjectRete.infoCompRetencion                    = new comprobanteRetencionInfoCompRetencion();
                            myObjectRete.impuestos                            = new List <FirmElect.Info.class_sri.Retencion.impuesto>();
                            myObjectRete.infoTributaria.ambiente              = "1";
                            myObjectRete.infoTributaria.tipoEmision           = "1";
                            myObjectRete.infoTributaria.razonSocial           = Rz;
                            myObjectRete.infoTributaria.nombreComercial       = Nomcom;
                            myObjectRete.infoTributaria.ruc                   = ruc;
                            myObjectRete.infoTributaria.claveAcceso           = "0000000000000000000000000000000000000000000000000";
                            myObjectRete.infoTributaria.codDoc                = "07";
                            myObjectRete.infoTributaria.estab                 = dtrCabRet.GetString(5);
                            myObjectRete.infoTributaria.ptoEmi                = dtrCabRet.GetString(6);
                            myObjectRete.infoTributaria.secuencial            = Convert.ToString(dtrCabRet.GetString(0));
                            myObjectRete.infoTributaria.dirMatriz             = direccion;
                            myObjectRete.infoCompRetencion.fechaEmision       = string.Format("{0:dd/MM/yyyy}", dtrCabRet.GetDateTime(3)).Replace('-', '/');//.Trim();
                            myObjectRete.infoCompRetencion.dirEstablecimiento = direccion;
                            //myObjectRete.infoCompRetencion.contribuyenteEspecial = contspecia;
                            myObjectRete.infoCompRetencion.obligadoContabilidad             = "SI";
                            myObjectRete.infoCompRetencion.tipoIdentificacionSujetoRetenido = dtrCabRet.GetString(4);
                            myObjectRete.infoCompRetencion.razonSocialSujetoRetenido        = dtrCabRet.GetString(2);
                            myObjectRete.infoCompRetencion.identificacionSujetoRetenido     = Convert.ToString(dtrCabRet.GetString(1));
                            myObjectRete.infoCompRetencion.periodoFiscal = Convert.ToString(myObjectRete.infoCompRetencion.fechaEmision).Substring(3, 7);
                            // sentencia para extraer detalle de retencion
                            using (SqlConnection conexion1 = new SqlConnection(ConexionDBCliente))
                            {
                                conexion1.Open();
                                string        sqlDetalleRet = "select * from ELECTRONICA_RET_DETALLE where secuencial='" + dtrCabRet.GetString(0) + "' ";
                                SqlCommand    cmdDetalleFac = new SqlCommand(sqlDetalleRet, conexion1);
                                SqlDataReader dtrDetalleRet = cmdDetalleFac.ExecuteReader();
                                while (dtrDetalleRet.Read())
                                {
                                    FirmElect.Info.class_sri.Retencion.impuesto imp = new FirmElect.Info.class_sri.Retencion.impuesto();
                                    imp.codigo            = dtrDetalleRet.GetString(1);
                                    imp.codigoRetencion   = dtrDetalleRet.GetString(2);
                                    imp.baseImponible     = dtrDetalleRet.GetDecimal(3);
                                    imp.porcentajeRetener = Convert.ToDecimal(dtrDetalleRet.GetDecimal(4));
                                    imp.valorRetenido     = dtrDetalleRet.GetDecimal(5);
                                    imp.codDocSustento    = dtrDetalleRet.GetString(6);
                                    imp.numDocSustento    = dtrDetalleRet.GetString(7);
                                    myObjectRete.infoCompRetencion.fechaEmision = string.Format("{0:dd/MM/yyyy}", dtrCabRet.GetDateTime(3)).Replace('-', '/');//.Trim();
                                    myObjectRete.impuestos.Add(imp);
                                    if (dtrDetalleRet.IsDBNull(8) == false)
                                    {
                                        campoAdicional = dtrDetalleRet.GetString(8);
                                    }
                                }

                                // campos adicionales

                                fx_GeneradorXML_ValidarEmail_Info datosAdc = new fx_GeneradorXML_ValidarEmail_Info();
                                if (datosAdc.email_bien_escrito(campoAdicional) == true)
                                {
                                    comprobanteRetencionCampoAdicional compoadicional = new comprobanteRetencionCampoAdicional();
                                    compoadicional.nombre      = "MAIL";
                                    compoadicional.Value       = campoAdicional;
                                    myObjectRete.infoAdicional = new List <comprobanteRetencionCampoAdicional>();
                                    myObjectRete.infoAdicional.Add(compoadicional);
                                }



                                dtrDetalleRet.Close();
                                conexion1.Close();
                                lista.Add(myObjectRete);
                            }
                        }
                        catch (Exception ex)
                        {
                        }
                    }
                    dtrCabRet.Close();
                    conexion.Close();
                    return(lista);
                }
            }
            catch (Exception ex)
            {
                return(new List <comprobanteRetencion>());
            }
        }
Ejemplo n.º 2
0
        List <factura> fx_GeneradorXML_IFacturas_Data.GenerarXmlFactura(DateTime FechaIni, DateTime FechaFin, string ConexionDBCliente, string OconEfirm, string FormatoFechaSRI, string formatoFechaDB)
        {
            DateTime Fi = Convert.ToDateTime(FechaIni.ToShortDateString());
            DateTime Ff = Convert.ToDateTime(FechaFin.ToShortDateString());

            //string sFi, sFf;
            //sFi = string.Format(formatoFechaDB, Fi);
            //sFf = string.Format(formatoFechaDB, Ff);


            try
            {
                List <factura> lista = new List <factura>();
                using (Entity_conexion_efixed context = new Entity_conexion_efixed())
                {
                    var facturas = context.vwfe_factura.Where(v => v.vt_fecha >= Fi && v.vt_fecha <= Ff);
                    foreach (var item in facturas)
                    {
                        factura myObject = new factura();
                        myObject.version     = "1.1.0";
                        myObject.id          = facturaID.comprobante;
                        myObject.idSpecified = true;
                        infoTributaria info = new infoTributaria();
                        myObject.infoFactura = new facturaInfoFactura();
                        myObject.infoFactura.totalConImpuestos = new List <facturaInfoFacturaTotalImpuesto>();
                        myObject.infoFactura.pagos             = new List <pagosPago>();
                        pagosPago Pago = new pagosPago();
                        myObject.infoTributaria = info;
                        myObject.detalles       = new List <facturaDetalle>();
                        facturaInfoFacturaTotalImpuesto impuesto = null;
                        info.ambiente = "1";
                        myObject.infoTributaria.tipoEmision     = "1";
                        myObject.infoTributaria.razonSocial     = item.RazonSocial;
                        myObject.infoTributaria.nombreComercial = item.NombreComercial;
                        myObject.infoTributaria.ruc             = item.em_ruc;
                        myObject.infoTributaria.claveAcceso     = "0000000000000000000000000000000000000000000000000";
                        //*********************************************************************************
                        myObject.infoTributaria.codDoc          = "01";
                        myObject.infoTributaria.estab           = item.vt_serie1;
                        myObject.infoTributaria.ptoEmi          = item.vt_serie2;
                        myObject.infoTributaria.secuencial      = item.vt_NumFactura;
                        myObject.infoTributaria.dirMatriz       = item.em_direccion;
                        myObject.infoFactura.fechaEmision       = string.Format("{0:dd/MM/yyyy}", item.vt_fecha);
                        myObject.infoFactura.dirEstablecimiento = item.em_direccion;
                        //if (item.ContribuyenteEspecial == "S")
                        //{
                        //    myObject.infoFactura.contribuyenteEspecial = "1234";
                        //}

                        myObject.infoFactura.obligadoContabilidadSpecified = true;
                        myObject.infoFactura.obligadoContabilidad          = obligadoContabilidad.SI;
                        if (item.IdTipoDocumento == "RUC")
                        {
                            myObject.infoFactura.tipoIdentificacionComprador = "04";
                        }

                        if (item.IdTipoDocumento == "PAS")
                        {
                            myObject.infoFactura.tipoIdentificacionComprador = "06";
                        }

                        if (item.IdTipoDocumento == "CED")
                        {
                            myObject.infoFactura.tipoIdentificacionComprador = "05";
                        }

                        myObject.infoFactura.razonSocialComprador    = (item.Nombres.ToString().Replace("S.A", "")).Trim();
                        myObject.infoFactura.identificacionComprador = item.pe_cedulaRuc;
                        myObject.infoFactura.direccionComprador      = item.Direccion;
                        myObject.infoFactura.totalSinImpuestos       = Convert.ToDecimal(item.total_sin_impuesto);
                        myObject.infoFactura.totalDescuento          = Convert.ToDecimal(item.totalDescuento);

                        //campos de propina
                        myObject.infoFactura.propinaSpecified = true;
                        myObject.infoFactura.propina          = 0;

                        //valor total de la factura
                        myObject.infoFactura.importeTotal = Convert.ToDecimal(item.importeTotal);
                        myObject.infoFactura.moneda       = "DOLAR";

                        //forma de pago quemada por decisión del cliente, siempre va a usar esta forma de pago
                        Pago.formaPago      = item.IdFormaPago;
                        Pago.total          = Convert.ToDecimal(item.importeTotal);
                        Pago.plazoSpecified = true;
                        Pago.plazo          = item.Dias_Vct;
                        Pago.unidadTiempo   = "Días";
                        myObject.infoFactura.pagos.Add(Pago);
                        if (item.vt_NumFactura == "000017003")
                        {
                        }
                        var facturas_imuestos = context.vwfe_factura_impuestos.Where(v => v.IdEmpresa == item.IdEmpresa && v.IdSucursal == item.IdSucursal && v.IdBodega == item.IdBodega && v.IdCbteVta == item.IdCbteVta);
                        foreach (var item_imp in facturas_imuestos)
                        {
                            impuesto        = new facturaInfoFacturaTotalImpuesto();
                            impuesto.codigo = "2";
                            if (item_imp.vt_por_iva == 0)
                            {
                                impuesto.baseImponible    = Convert.ToDecimal("0.00");
                                impuesto.codigoPorcentaje = "1";
                            }
                            if (item_imp.vt_por_iva == 12)
                            {
                                impuesto.baseImponible    = Convert.ToDecimal(item_imp.Base_imponible);
                                impuesto.codigoPorcentaje = "2";
                            }
                            if (item_imp.vt_por_iva == 14)
                            {
                                impuesto.codigoPorcentaje = "3";
                                impuesto.baseImponible    = Convert.ToDecimal(item_imp.Base_imponible);
                            }
                            impuesto.valor = Convert.ToDecimal(item_imp.impuesto);
                            myObject.infoFactura.totalConImpuestos.Add(impuesto);
                        }


                        var     facturas_detalle = context.vwfe_factura_detalle.Where(v => v.IdEmpresa == item.IdEmpresa && v.IdSucursal == item.IdSucursal && v.IdBodega == item.IdBodega && v.IdCbteVta == item.IdCbteVta);
                        decimal totalDescuento   = 0;
                        foreach (var item_det in facturas_detalle)
                        {
                            impuesto       imp      = new impuesto();
                            facturaDetalle fDetalle = new facturaDetalle();
                            fDetalle.codigoPrincipal        = item_det.pr_codigo;
                            fDetalle.codigoAuxiliar         = item_det.pr_codigo;
                            fDetalle.descripcion            = item_det.pr_descripcion;
                            fDetalle.cantidad               = Convert.ToDecimal(item_det.vt_cantidad);
                            fDetalle.precioUnitario         = Convert.ToDecimal(item_det.vt_Precio);
                            fDetalle.descuento              = Convert.ToDecimal(Convert.ToDecimal(item_det.vt_cantidad) * item_det.vt_DescUnitario);
                            totalDescuento                  = totalDescuento + fDetalle.descuento;
                            fDetalle.precioTotalSinImpuesto = Convert.ToDecimal(item_det.vt_Subtotal);
                            if (item_det.vt_por_iva == 12)
                            {
                                imp.codigo           = "2";
                                imp.codigoPorcentaje = "2";
                                imp.tarifa           = Convert.ToDecimal(item_det.vt_por_iva);
                                imp.baseImponible    = Convert.ToDecimal(item_det.vt_Subtotal);
                                imp.valor            = Convert.ToDecimal(item_det.vt_iva);
                            }

                            if (item_det.vt_por_iva == 14)
                            {
                                imp.codigo           = "2";
                                imp.codigoPorcentaje = "3";
                                imp.tarifa           = Convert.ToDecimal(item_det.vt_por_iva);
                                imp.baseImponible    = Convert.ToDecimal(item_det.vt_Subtotal);
                                imp.valor            = Convert.ToDecimal(item_det.vt_iva);
                            }
                            if (item_det.vt_por_iva == 0)
                            {
                                imp.codigo           = "2";
                                imp.codigoPorcentaje = "0";
                                imp.tarifa           = Convert.ToDecimal(item_det.vt_por_iva);
                                imp.baseImponible    = Convert.ToDecimal(item_det.vt_Subtotal);
                                imp.valor            = Convert.ToDecimal(item_det.vt_iva);
                            }

                            fDetalle.impuestos = new List <impuesto>();
                            fDetalle.impuestos.Add(imp);
                            myObject.detalles.Add(fDetalle);
                        }

                        myObject.infoFactura.totalDescuento = totalDescuento;
                        // campos adicionales

                        fx_GeneradorXML_ValidarEmail_Info datosAdc = new fx_GeneradorXML_ValidarEmail_Info();
                        if (item.Correo != null)
                        {
                            if (datosAdc.email_bien_escrito(item.Correo) == true)
                            {
                                myObject.infoAdicional = new List <facturaCampoAdicional>();
                                facturaCampoAdicional compoadicional = new facturaCampoAdicional();
                                compoadicional.nombre = "MAIL";
                                compoadicional.Value  = item.Correo;
                                myObject.infoAdicional.Add(compoadicional);
                            }
                        }

                        lista.Add(myObject);
                    }

                    var lsr = get_facturas_eventos(FechaIni, FechaFin);
                    if (lsr.Count() != 0)
                    {
                        lista.AddRange(lsr);
                    }
                }

                return(lista);
            }
            catch (Exception ex)
            {
                return(new List <factura>());
            }
        }
Ejemplo n.º 3
0
        public List <factura> get_facturas_eventos(DateTime FechaIni, DateTime FechaFin)
        {
            tb_Empresa          info_empresa        = new tb_Empresa();
            tb_facturas_eventos info_factura_evento = new tb_facturas_eventos();
            decimal?            vt_NumFactura       = 1;

            try
            {
                using (EntitiesFactElectronica Context_fac = new EntitiesFactElectronica())
                {
                    info_empresa  = Context_fac.tb_Empresa.Where(v => v.RUC == "0991435786001").FirstOrDefault();
                    vt_NumFactura = Context_fac.tb_facturas_eventos.Where(v => v.IdEmpresa == info_empresa.IdEmpresa).Max(v => v.NumFactura) + 1;
                }
            }
            catch (Exception)
            {
                return(new List <factura>());
            }



            DateTime Fi = Convert.ToDateTime(FechaIni.ToShortDateString());
            DateTime Ff = Convert.ToDateTime(FechaFin.ToShortDateString());

            //string sFi, sFf;
            //sFi = string.Format(formatoFechaDB, Fi);
            //sFf = string.Format(formatoFechaDB, Ff);


            try
            {
                List <factura> lista = new List <factura>();
                using (Entity_eventos context = new Entity_eventos())
                {
                    var facturas = context.vwFacturas_fac_electronica.Where(v => v.fecha >= Fi && v.fecha <= Ff && v.estado_aprobacion == "APRO" && v.bd_est == 1);
                    foreach (var item in facturas)
                    {
                        item.nu_ced_clte = item.nu_ced_clte.Trim();

                        factura myObject = new factura();
                        myObject.version     = "1.1.0";
                        myObject.id          = facturaID.comprobante;
                        myObject.idSpecified = true;
                        infoTributaria info = new infoTributaria();
                        myObject.infoFactura = new facturaInfoFactura();
                        myObject.infoFactura.totalConImpuestos = new List <facturaInfoFacturaTotalImpuesto>();
                        myObject.infoFactura.pagos             = new List <pagosPago>();
                        pagosPago Pago = new pagosPago();
                        myObject.infoTributaria = info;
                        myObject.detalles       = new List <facturaDetalle>();
                        facturaInfoFacturaTotalImpuesto impuesto = null;
                        info.ambiente = "1";
                        myObject.infoTributaria.tipoEmision     = "1";
                        myObject.infoTributaria.razonSocial     = info_empresa.RazonSocial;
                        myObject.infoTributaria.nombreComercial = info_empresa.NombreComercial;
                        myObject.infoTributaria.ruc             = info_empresa.RUC;
                        myObject.infoTributaria.claveAcceso     = "0000000000000000000000000000000000000000000000000";
                        //*********************************************************************************
                        myObject.infoTributaria.codDoc          = "01";
                        myObject.infoTributaria.estab           = "001";
                        myObject.infoTributaria.ptoEmi          = "003";
                        myObject.infoTributaria.secuencial      = vt_NumFactura.ToString().PadLeft(9, '0');
                        myObject.infoTributaria.dirMatriz       = info_empresa.DirMatriz;
                        myObject.infoFactura.fechaEmision       = string.Format("{0:dd/MM/yyyy}", item.fecha);
                        myObject.infoFactura.dirEstablecimiento = info_empresa.DirMatriz;
                        //if (item.ContribuyenteEspecial == "S")
                        //{
                        //    myObject.infoFactura.contribuyenteEspecial = "1234";
                        //}

                        myObject.infoFactura.obligadoContabilidadSpecified = true;
                        myObject.infoFactura.obligadoContabilidad          = obligadoContabilidad.SI;
                        if (item.nu_ced_clte.Length == 13)
                        {
                            myObject.infoFactura.tipoIdentificacionComprador = "04";
                        }

                        else
                        {
                            myObject.infoFactura.tipoIdentificacionComprador = "05";
                        }
                        string nombre = item.nombres.Trim() + " " + item.apellidos.Trim();
                        myObject.infoFactura.razonSocialComprador    = (nombre.ToString().Replace("S.A", "")).Trim();
                        myObject.infoFactura.identificacionComprador = item.nu_ced_ruc.Trim();
                        myObject.infoFactura.direccionComprador      = item.direccion.Trim();
                        myObject.infoFactura.totalSinImpuestos       = Convert.ToDecimal(item.subtotal);
                        myObject.infoFactura.totalDescuento          = Convert.ToDecimal(0.00);

                        //campos de propina
                        myObject.infoFactura.propinaSpecified = true;
                        myObject.infoFactura.propina          = 0;

                        //valor total de la factura
                        myObject.infoFactura.importeTotal = Convert.ToDecimal(item.total);
                        myObject.infoFactura.moneda       = "DOLAR";

                        //forma de pago quemada por decisión del cliente, siempre va a usar esta forma de pago
                        Pago.formaPago      = "20";
                        Pago.total          = Convert.ToDecimal(item.total);
                        Pago.plazoSpecified = true;
                        Pago.plazo          = 0;
                        Pago.unidadTiempo   = "Días";
                        myObject.infoFactura.pagos.Add(Pago);


                        impuesto        = new facturaInfoFacturaTotalImpuesto();
                        impuesto.codigo = "2";
                        if (item.v_iva == 0)
                        {
                            impuesto.baseImponible    = Convert.ToDecimal("0.00");
                            impuesto.codigoPorcentaje = "1";
                        }
                        if (item.v_iva > 0)
                        {
                            impuesto.baseImponible    = Convert.ToDecimal(item.subtotal);
                            impuesto.codigoPorcentaje = "2";
                        }

                        impuesto.valor = Convert.ToDecimal(item.v_iva);
                        myObject.infoFactura.totalConImpuestos.Add(impuesto);



                        decimal        totalDescuento = 0;
                        impuesto       imp            = new impuesto();
                        facturaDetalle fDetalle       = new facturaDetalle();
                        fDetalle.codigoPrincipal        = item.cod_evento.ToString();
                        fDetalle.codigoAuxiliar         = item.cod_evento.ToString();
                        fDetalle.descripcion            = item.descrip;
                        fDetalle.cantidad               = Convert.ToDecimal(item.cant);
                        fDetalle.precioUnitario         = Convert.ToDecimal(item.v_unit);
                        fDetalle.descuento              = Convert.ToDecimal("0.00");
                        totalDescuento                  = totalDescuento + fDetalle.descuento;
                        fDetalle.precioTotalSinImpuesto = Convert.ToDecimal(item.subtotal);
                        if (item.v_iva > 0)
                        {
                            imp.codigo           = "2";
                            imp.codigoPorcentaje = "2";
                            imp.tarifa           = Convert.ToDecimal(12);
                            imp.baseImponible    = Convert.ToDecimal(item.subtotal);
                            imp.valor            = Convert.ToDecimal(item.v_iva);
                        }
                        else
                        {
                            imp.codigo           = "2";
                            imp.codigoPorcentaje = "0";
                            imp.tarifa           = Convert.ToDecimal(0);
                            imp.baseImponible    = Convert.ToDecimal(item.subtotal);
                            imp.valor            = Convert.ToDecimal(item.v_iva);
                        }

                        fDetalle.impuestos = new List <impuesto>();
                        fDetalle.impuestos.Add(imp);
                        myObject.detalles.Add(fDetalle);


                        myObject.infoFactura.totalDescuento = Math.Round(totalDescuento, 2);
                        // campos adicionales
                        fx_GeneradorXML_ValidarEmail_Info datosAdc = new fx_GeneradorXML_ValidarEmail_Info();
                        if (item.email != null)
                        {
                            if (datosAdc.email_bien_escrito(item.email) == true)
                            {
                                myObject.infoAdicional = new List <facturaCampoAdicional>();
                                facturaCampoAdicional compoadicional = new facturaCampoAdicional();
                                compoadicional.nombre = "MAIL";
                                compoadicional.Value  = item.email;
                                myObject.infoAdicional.Add(compoadicional);
                            }
                        }



                        #region Actualizar


                        try
                        {
                            using (Entity_eventos Context_fac_sis_ext = new Entity_eventos())
                            {
                                var entity_modificar = Context_fac_sis_ext.Facturas.Where(v => v.cod_evento == item.cod_evento && v.cod_fact == item.cod_fact).FirstOrDefault();
                                entity_modificar.estado_aprobacion = "GENE";
                                Context_fac_sis_ext.SaveChanges();
                            }
                        }
                        catch (Exception)
                        {
                        }
                        #endregion

                        #region Actualizando secuancia
                        try
                        {
                            using (EntitiesFactElectronica Context_fac = new EntitiesFactElectronica())
                            {
                                var entity_modificar = Context_fac.tb_facturas_eventos.Where(v => v.Evento == item.cod_evento && v.Factura == item.cod_fact).FirstOrDefault();

                                if (entity_modificar == null)
                                {
                                    tb_facturas_eventos evento = new tb_facturas_eventos()
                                    {
                                        IdEmpresa       = info_empresa.IdEmpresa,
                                        Establecimiento = "001",
                                        Puntoemision    = "003",
                                        NumFactura      = Convert.ToDecimal(vt_NumFactura),
                                        Cantidad        = item.cant,
                                        ValorUnitario   = item.v_unit,
                                        Subtotal        = item.subtotal,
                                        Iva             = item.v_iva,
                                        Total           = item.total,
                                        Evento          = item.cod_evento,
                                        Factura         = Convert.ToInt32(item.cod_fact),
                                        Nombre_Evento   = item.descrip
                                    };
                                    if (item.nu_ced_ruc.Trim().Contains("9999999999"))
                                    {
                                        evento.Observacion = item.observacion;
                                    }

                                    Context_fac.tb_facturas_eventos.Add(evento);
                                    Context_fac.SaveChanges();
                                    vt_NumFactura = vt_NumFactura + 1;
                                }
                                else
                                {
                                    myObject.infoTributaria.secuencial = entity_modificar.NumFactura.ToString().PadLeft(9, '0');
                                }
                            }
                        }
                        catch (Exception)
                        {
                        }
                        #endregion

                        lista.Add(myObject);
                    }
                }


                return(lista);
            }
            catch (Exception ex)
            {
                return(new List <factura>());
            }
        }
        public List <Info.class_sri.NotaCredito.notaCredito> GenerarXmlNotaCredito(DateTime FechaIni, DateTime FechaFin, string ConexionDBCliente, string OconEfirm, string FormatoFechaSRI, string formatoFechaDB)
        {
            #region conexion de base detos efrim
            try
            {
                using (SqlConnection co = new SqlConnection(OconEfirm))
                {
                    co.Open();
                    sql = "select RUC,RAZONSOCIAL,NOMBRECOMERCIAL,DIRMATRIZ,CONTRIBUYENTEESPECIAL from tb_Empresa where RUC ='0992496797001'";
                    SqlCommand    cmd    = new SqlCommand(sql, co);
                    SqlDataReader reader = cmd.ExecuteReader();
                    if (reader.Read())
                    {
                        ruc        = reader.GetString(0);
                        Rz         = reader.GetString(1);
                        Nomcom     = reader.GetString(2);
                        direccion  = reader.GetString(3);
                        contspecia = reader.GetString(4);
                    }
                    co.Close();
                    reader.Close();
                }
            }
            catch (Exception ex)
            {
            }
            #endregion

            string sFi, sFf;
            sFi = string.Format(formatoFechaDB, FechaIni);
            sFf = string.Format(formatoFechaDB, FechaFin);



            try
            {
                List <notaCredito> lista = new List <notaCredito>();
                using (SqlConnection conexion = new SqlConnection(ConexionDBCliente))
                {
                    conexion.Open();
                    string        sqlcabFact = "select * from ELECTRONICA_NTC_CABECERA where  fechaEmision between '" + sFi + "' and '" + sFf + "'";
                    SqlCommand    cmdNC      = new SqlCommand(sqlcabFact, conexion);
                    SqlDataReader dtrNC      = cmdNC.ExecuteReader();
                    while (dtrNC.Read())
                    {
                        try
                        {
                            notaCredito myObject;
                            myObject         = new notaCredito();
                            myObject.id      = notaCreditoID.comprobante;
                            myObject.version = "1.1.0";
                            //  myObject.idSpecified = true;

                            totalConImpuestos imp = new totalConImpuestos();
                            myObject.infoNotaCredito = new notaCreditoInfoNotaCredito();
                            myObject.infoTributaria  = new infoTributaria();
                            myObject.detalles        = new List <notaCreditoDetalle>();
                            myObject.infoNotaCredito.totalConImpuestos = new List <totalConImpuestosTotalImpuesto>();
                            totalConImpuestosTotalImpuesto impuesto = null;

                            myObject.infoTributaria.ambiente                     = "1";
                            myObject.infoTributaria.tipoEmision                  = "1";
                            myObject.infoTributaria.razonSocial                  = Rz;
                            myObject.infoTributaria.nombreComercial              = Nomcom;
                            myObject.infoTributaria.ruc                          = ruc;
                            myObject.infoTributaria.claveAcceso                  = "0000000000000000000000000000000000000000000000000";
                            myObject.infoTributaria.codDoc                       = "04";
                            myObject.infoTributaria.estab                        = dtrNC.GetString(5);
                            myObject.infoTributaria.ptoEmi                       = dtrNC.GetString(6);
                            myObject.infoTributaria.secuencial                   = dtrNC.GetString(4).PadLeft(9, '0');
                            myObject.infoTributaria.dirMatriz                    = direccion;
                            myObject.infoNotaCredito.fechaEmision                = string.Format("{0:dd/MM/yyyy}", dtrNC.GetDateTime(0));//.Trim();
                            myObject.infoNotaCredito.dirEstablecimiento          = direccion;
                            myObject.infoNotaCredito.tipoIdentificacionComprador = Convert.ToString(dtrNC.GetString(1));
                            myObject.infoNotaCredito.razonSocialComprador        = Convert.ToString(dtrNC.GetString(3));
                            myObject.infoNotaCredito.identificacionComprador     = Convert.ToString(dtrNC.GetString(2));
                            myObject.infoNotaCredito.contribuyenteEspecial       = contspecia;
                            myObject.infoNotaCredito.obligadoContabilidad        = "SI";
                            myObject.infoNotaCredito.codDocModificado            = "01";
                            myObject.infoNotaCredito.numDocModificado            = Convert.ToString(dtrNC.GetString(12));
                            myObject.infoNotaCredito.fechaEmisionDocSustento     = string.Format("{0:dd/MM/yyyy}", dtrNC.GetDateTime(0));//.Trim();
                            myObject.infoNotaCredito.totalSinImpuestos           = dtrNC.GetDecimal(9);
                            myObject.infoNotaCredito.valorModificacion           = dtrNC.GetDecimal(14);
                            myObject.infoNotaCredito.moneda                      = "DOLAR";
                            myObject.infoNotaCredito.motivo                      = dtrNC.GetString(13);

                            using (SqlConnection conexion2 = new SqlConnection(ConexionDBCliente))
                            {
                                conexion2.Open();
                                string        SQLTot_impuesto = "select * from ELECTRONICA_NC_TOT_IMPUESTOS  where secuencial='" + dtrNC.GetString(16) + "'";
                                SqlCommand    cmdTotImpuesto  = new SqlCommand(SQLTot_impuesto, conexion2);
                                SqlDataReader dtrTotImpuesto  = cmdTotImpuesto.ExecuteReader();
                                while (dtrTotImpuesto.Read())
                                {
                                    impuesto                  = new totalConImpuestosTotalImpuesto();
                                    impuesto.codigo           = dtrTotImpuesto.GetString(3);
                                    impuesto.codigoPorcentaje = dtrTotImpuesto.GetString(4);
                                    if (dtrTotImpuesto.GetString(4) == "0")
                                    {
                                        impuesto.baseImponible = dtrTotImpuesto.GetDecimal(7);
                                    }
                                    else
                                    {
                                        if (dtrTotImpuesto.GetString(4) == "2")
                                        {
                                            impuesto.baseImponible = dtrTotImpuesto.GetDecimal(6);
                                        }
                                        else
                                        if (dtrTotImpuesto.GetString(4) == "3")
                                        {
                                            impuesto.baseImponible = dtrTotImpuesto.GetDecimal(5);
                                        }
                                    }

                                    impuesto.valor = dtrTotImpuesto.GetDecimal(8);
                                    myObject.infoNotaCredito.totalConImpuestos.Add(impuesto);
                                }
                            }



                            // detalle de nota credito
                            using (SqlConnection conexion1 = new SqlConnection(ConexionDBCliente))
                            {
                                string sqlDetalleRet = "";
                                conexion1.Open();
                                if (dtrNC.GetSqlInt32(15) == 0)
                                {
                                    sqlDetalleRet = "select * from ELECTRONICA_NTC_DETALLE  where secuencial='" + dtrNC.GetString(16) + "'";
                                }
                                else
                                {
                                    sqlDetalleRet = "select * from ELECTRONICA_NTC_DETALLE_S  where secuencial='" + dtrNC.GetString(16) + "'";
                                }

                                SqlCommand    cmdDetalleNC = new SqlCommand(sqlDetalleRet, conexion1);
                                SqlDataReader dtrDetalleNC = cmdDetalleNC.ExecuteReader();
                                while (dtrDetalleNC.Read())
                                {
                                    impuesto           impue     = new impuesto();
                                    notaCreditoDetalle NCdetalle = new notaCreditoDetalle();
                                    // NCdetalle.descuento = dtrDetalleNC.GetDecimal(9);
                                    NCdetalle.descuentoSpecified = true;
                                    NCdetalle.codigoInterno      = dtrDetalleNC.GetString(1);
                                    NCdetalle.descripcion        = dtrDetalleNC.GetString(5);
                                    if (dtrNC.GetSqlInt32(15) == 1)
                                    {
                                        NCdetalle.cantidad = Convert.ToDecimal(dtrDetalleNC.GetInt32(2));
                                    }
                                    else
                                    {
                                        NCdetalle.cantidad = dtrDetalleNC.GetDecimal(2);
                                    }
                                    NCdetalle.precioUnitario = dtrDetalleNC.GetDecimal(3);

                                    NCdetalle.precioTotalSinImpuesto = dtrDetalleNC.GetDecimal(4);
                                    NCdetalle.impuestos = new List <impuesto>();
                                    if (dtrDetalleNC.GetString(6) == "VS-12%")
                                    {
                                        impue.codigo           = "2";
                                        impue.codigoPorcentaje = "2";
                                        impue.tarifa           = 12;
                                        impue.baseImponible    = dtrDetalleNC.GetDecimal(4);
                                        impue.valor            = dtrDetalleNC.GetDecimal(7);
                                    }
                                    else
                                    if (dtrDetalleNC.GetString(6) == "VS-14%")
                                    {
                                        impue.codigo           = "2";
                                        impue.codigoPorcentaje = "3";
                                        impue.tarifa           = 14;
                                        impue.baseImponible    = dtrDetalleNC.GetDecimal(4);
                                        impue.valor            = dtrDetalleNC.GetDecimal(7);
                                    }
                                    else
                                    {
                                        impue.codigo           = "2";
                                        impue.codigoPorcentaje = "0";
                                        impue.tarifa           = 0;
                                        impue.baseImponible    = dtrDetalleNC.GetDecimal(4);
                                        impue.valor            = dtrDetalleNC.GetDecimal(7);
                                    }
                                    NCdetalle.impuestos.Add(impue);
                                    myObject.detalles.Add(NCdetalle);
                                    if (dtrNC.GetSqlInt32(15) == 0)
                                    {
                                        if (dtrDetalleNC.IsDBNull(8) == false)
                                        {
                                            campoAdicional = dtrDetalleNC.GetString(8);
                                        }
                                    }
                                    else
                                    {
                                        if (dtrDetalleNC.IsDBNull(9) == false)
                                        {
                                            //NCdetalle.descuento = dtrDetalleNC.GetDecimal(8);
                                            campoAdicional = dtrDetalleNC.GetString(9);
                                        }
                                    }
                                }


                                // campos adicionales

                                fx_GeneradorXML_ValidarEmail_Info datosAdc = new fx_GeneradorXML_ValidarEmail_Info();
                                if (campoAdicional != null)
                                {
                                    if (datosAdc.email_bien_escrito(campoAdicional) == true)
                                    {
                                        notaCreditoCampoAdicional compoadicional = new notaCreditoCampoAdicional();
                                        compoadicional.nombre  = "MAIL";
                                        compoadicional.Value   = campoAdicional;
                                        myObject.infoAdicional = new List <notaCreditoCampoAdicional>();
                                        myObject.infoAdicional.Add(compoadicional);
                                    }
                                }

                                lista.Add(myObject);
                                dtrDetalleNC.Close();
                                conexion1.Close();
                            }
                        }
                        catch (Exception ex)
                        {
                        }
                    }
                    dtrNC.Close();
                    conexion.Close();
                    return(lista);
                }
            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.Message);
                return(new List <Info.class_sri.NotaCredito.notaCredito>());
            }
        }
Ejemplo n.º 5
0
        public List <notaDebito> GenerarXmlNotaDebito(DateTime FechaIni, DateTime FechaFin, string ConexionDBCliente, string FormatoFechaSRI, string formatoFechaDB)
        {
            DateTime Fi = Convert.ToDateTime(FechaIni.ToShortDateString());
            DateTime Ff = Convert.ToDateTime(FechaFin.ToShortDateString());

            //string sFi, sFf;
            //sFi = string.Format(formatoFechaDB, Fi);
            //sFf = string.Format(formatoFechaDB, Ff);


            try
            {
                List <notaDebito> lista = new List <notaDebito>();
                using (Entity_conexion_efixed context = new Entity_conexion_efixed())
                {
                    var nota_credito = context.vwfe_nota_debito.Where(v => v.no_fecha >= Fi && v.no_fecha <= Ff);
                    foreach (var item in nota_credito)
                    {
                        notaDebito myObject = new notaDebito();
                        myObject.version = "1.0.0";
                        myObject.id      = new notaDebitoID();
                        infoTributaria info = new infoTributaria();
                        myObject.infoNotaDebito           = new notaDebitoInfoNotaDebito();
                        myObject.infoNotaDebito.impuestos = new List <impuesto>();
                        myObject.infoTributaria           = info;
                        info.ambiente = "1";
                        myObject.infoTributaria.tipoEmision     = "1";
                        myObject.infoTributaria.razonSocial     = item.NombreComercial;
                        myObject.infoTributaria.nombreComercial = item.NombreComercial;
                        myObject.infoTributaria.ruc             = item.em_ruc;
                        myObject.infoTributaria.claveAcceso     = "0000000000000000000000000000000000000000000000000";
                        myObject.idSpecified = true;
                        //*********************************************************************************
                        myObject.infoTributaria.codDoc             = "05";
                        myObject.infoTributaria.estab              = item.Serie1;
                        myObject.infoTributaria.ptoEmi             = item.Serie2;
                        myObject.infoTributaria.secuencial         = item.NumNota_Impresa;
                        myObject.infoTributaria.dirMatriz          = item.em_direccion;
                        myObject.infoNotaDebito.fechaEmision       = string.Format("{0:dd/MM/yyyy}", item.no_fecha);
                        myObject.infoNotaDebito.dirEstablecimiento = item.em_direccion;
                        //if(item.ContribuyenteEspecial=="S")
                        //myObject.infoNotaDebito.contribuyenteEspecial = "00000";
                        myObject.infoNotaDebito.obligadoContabilidad    = obligadoContabilidad.SI.ToString();
                        myObject.infoNotaDebito.codDocModificado        = "01";
                        myObject.infoNotaDebito.numDocModificado        = item.vt_serie1 + "-" + item.vt_serie2 + "-" + item.vt_NumFactura;
                        myObject.infoNotaDebito.fechaEmisionDocSustento = string.Format("{0:dd/MM/yyyy}", item.vt_fecha);
                        if (item.IdTipoDocumento == "RUC")
                        {
                            myObject.infoNotaDebito.tipoIdentificacionComprador = "04";
                        }

                        if (item.IdTipoDocumento == "PAS")
                        {
                            myObject.infoNotaDebito.tipoIdentificacionComprador = "06";
                        }

                        if (item.IdTipoDocumento == "CED")
                        {
                            myObject.infoNotaDebito.tipoIdentificacionComprador = "05";
                        }

                        myObject.infoNotaDebito.razonSocialComprador    = item.pe_nombreCompleto.ToString().Replace("S.A", "").Trim();
                        myObject.infoNotaDebito.identificacionComprador = item.pe_cedulaRuc;
                        myObject.infoNotaDebito.dirEstablecimiento      = item.em_direccion;

                        decimal totalSinImpuestos = 0;
                        decimal total             = 0;


                        var facturas_imuestos = context.vwfe_nota_debito_impuestos.Where(v => v.IdEmpresa == item.IdEmpresa && v.IdSucursal == item.IdSucursal && v.IdBodega == item.IdBodega && v.IdNota == item.IdNota).ToList();
                        foreach (var item_imp in facturas_imuestos)
                        {
                            if (item_imp.vt_por_iva > 0)
                            {
                                impuesto impuesto = new impuesto();
                                impuesto.codigo = "2";
                                if (item_imp.vt_por_iva == 0)
                                {
                                    impuesto.codigoPorcentaje = "1";
                                }
                                if (item_imp.vt_por_iva == 12)
                                {
                                    impuesto.codigoPorcentaje = "2";
                                }
                                if (item_imp.vt_por_iva == 14)
                                {
                                    impuesto.codigoPorcentaje = "3";
                                }
                                impuesto.tarifa        = Convert.ToDecimal(item_imp.vt_por_iva);
                                impuesto.baseImponible = Convert.ToDecimal(item_imp.Base_imponible);
                                totalSinImpuestos      = totalSinImpuestos + impuesto.baseImponible;
                                impuesto.valor         = Convert.ToDecimal(item_imp.impuesto);
                                total = total + impuesto.baseImponible + impuesto.valor;
                                myObject.infoNotaDebito.impuestos.Add(impuesto);
                            }
                        }
                        myObject.infoNotaDebito.totalSinImpuestos = Convert.ToDecimal(totalSinImpuestos);
                        myObject.infoNotaDebito.valorTotal        = total;

                        myObject.motivos        = new notaDebitoMotivos();
                        myObject.motivos.motivo = new List <notaDebitoMotivosMotivo>();
                        var facturas_detalle = context.vwfe_nota_debito_detalle.Where(v => v.IdEmpresa == item.IdEmpresa && v.IdSucursal == item.IdSucursal && v.IdBodega == item.IdBodega && v.IdNota == item.IdNota && v.sc_total > 0).ToList();

                        foreach (var item_det in facturas_detalle)
                        {
                            notaDebitoMotivosMotivo motivos = new notaDebitoMotivosMotivo();
                            motivos.razon = item_det.pr_descripcion;
                            motivos.valor = Convert.ToDecimal(item_det.sc_subtotal);
                            myObject.motivos.motivo.Add(motivos);
                        }



                        fx_GeneradorXML_ValidarEmail_Info datosAdc = new fx_GeneradorXML_ValidarEmail_Info();
                        myObject.infoAdicional = new List <notaDebitoCampoAdicional>();
                        if (item.Correo != null)
                        {
                            if (datosAdc.email_bien_escrito(item.Correo) == true)
                            {
                                notaDebitoCampoAdicional compoadicional = new notaDebitoCampoAdicional();
                                compoadicional.nombre = "MAIL";
                                compoadicional.Value  = item.Correo;
                                myObject.infoAdicional.Add(compoadicional);
                            }
                        }
                        if (item.Telefono != null)
                        {
                            notaDebitoCampoAdicional compoadicional = new notaDebitoCampoAdicional();
                            compoadicional.nombre = "TELEFONO";
                            compoadicional.Value  = item.Telefono;
                            myObject.infoAdicional.Add(compoadicional);
                        }
                        lista.Add(myObject);
                    }
                }
                return(lista);
            }
            catch (Exception ex)
            {
                return(new List <notaDebito>());
            }
        }
Ejemplo n.º 6
0
        public List <comprobanteRetencion> GenerarXmlRetencion(DateTime FechaIni, DateTime FechaFin, string ConexionDBCliente, string OconEfirm, string FormatoFechaSRI, string formatoFechaDB)
        {
            //string sFi, sFf;
            //sFi = string.Format(formatoFechaDB, FechaIni);
            //sFf = string.Format(formatoFechaDB, FechaFin);
            DateTime Fi = Convert.ToDateTime(FechaIni.ToShortDateString());
            DateTime Ff = Convert.ToDateTime(FechaFin.ToShortDateString());
            List <comprobanteRetencion> lista = new List <comprobanteRetencion>();

            try
            {
                using (Entity_conexion_efixed Context = new Entity_conexion_efixed())
                {
                    var retenciones = Context.vwfe_retencion.Where(v => v.fecha >= Fi && v.fecha <= Ff);

                    foreach (var item in retenciones)
                    {
                        try
                        {
                            comprobanteRetencion myObjectRete = new comprobanteRetencion();
                            myObjectRete.id                                   = comprobanteRetencionID.comprobante;
                            myObjectRete.version                              = "1.0.0";
                            myObjectRete.idSpecified                          = true;
                            myObjectRete.infoTributaria                       = new infoTributaria();
                            myObjectRete.infoCompRetencion                    = new comprobanteRetencionInfoCompRetencion();
                            myObjectRete.impuestos                            = new List <FirmElect.Info.class_sri.Retencion.impuesto>();
                            myObjectRete.infoTributaria.ambiente              = "1";
                            myObjectRete.infoTributaria.tipoEmision           = "1";
                            myObjectRete.infoTributaria.razonSocial           = item.RazonSocial;
                            myObjectRete.infoTributaria.nombreComercial       = item.NombreComercial;
                            myObjectRete.infoTributaria.ruc                   = item.em_ruc;
                            myObjectRete.infoTributaria.claveAcceso           = "0000000000000000000000000000000000000000000000000";
                            myObjectRete.infoTributaria.codDoc                = "07";
                            myObjectRete.infoTributaria.estab                 = item.serie1;
                            myObjectRete.infoTributaria.ptoEmi                = item.serie2;
                            myObjectRete.infoTributaria.secuencial            = Convert.ToString(item.NumRetencion);
                            myObjectRete.infoTributaria.dirMatriz             = item.em_direccion;
                            myObjectRete.infoCompRetencion.fechaEmision       = string.Format("{0:dd/MM/yyyy}", item.fecha);//.Trim();
                            myObjectRete.infoCompRetencion.dirEstablecimiento = item.em_direccion;
                            //if (item.ContribuyenteEspecial != "0000")
                            //{
                            //    myObjectRete.infoCompRetencion.contribuyenteEspecial = item.ContribuyenteEspecial;
                            //}
                            myObjectRete.infoCompRetencion.obligadoContabilidad = "SI";
                            if (item.IdTipoDocumento == "RUC")
                            {
                                myObjectRete.infoCompRetencion.tipoIdentificacionSujetoRetenido = "04";
                            }

                            if (item.IdTipoDocumento == "PAS")
                            {
                                myObjectRete.infoCompRetencion.tipoIdentificacionSujetoRetenido = "06";
                            }

                            if (item.IdTipoDocumento == "CED")
                            {
                                myObjectRete.infoCompRetencion.tipoIdentificacionSujetoRetenido = "05";
                            }
                            myObjectRete.infoCompRetencion.razonSocialSujetoRetenido    = (item.pe_nombreCompleto.ToString().Replace("S.A", "")).Trim();
                            myObjectRete.infoCompRetencion.identificacionSujetoRetenido = Convert.ToString(item.pe_cedulaRuc);
                            myObjectRete.infoCompRetencion.periodoFiscal = Convert.ToString(myObjectRete.infoCompRetencion.fechaEmision).Substring(3, 7);
                            // sentencia para extraer detalle de retencion
                            var retencion_det = Context.vwfe_retencion_detalle.Where(v => v.IdEmpresa == item.IdEmpresa && v.IdRetencion == item.IdRetencion).ToList();

                            foreach (var item_det in retencion_det)
                            {
                                FirmElect.Info.class_sri.Retencion.impuesto imp = new FirmElect.Info.class_sri.Retencion.impuesto();
                                if (item_det.re_tipoRet == "RTF")
                                {
                                    imp.codigo = "1";
                                }
                                else
                                {
                                    imp.codigo = "2";
                                }
                                if (item_det.re_tipoRet != "RTF")
                                {
                                    if (item_det.re_Porcen_retencion == 10)
                                    {
                                        imp.codigoRetencion = "09";
                                    }
                                    if (item_det.re_Porcen_retencion == 20)
                                    {
                                        imp.codigoRetencion = "10";
                                    }
                                    if (item_det.re_Porcen_retencion == 30)
                                    {
                                        imp.codigoRetencion = "1";
                                    }
                                    if (item_det.re_Porcen_retencion == 50)
                                    {
                                        imp.codigoRetencion = "11";
                                    }
                                    if (item_det.re_Porcen_retencion == 70)
                                    {
                                        imp.codigoRetencion = "2";
                                    }
                                    if (item_det.re_Porcen_retencion == 100)
                                    {
                                        imp.codigoRetencion = "3";
                                    }
                                }
                                else
                                {
                                    imp.codigoRetencion = item_det.re_Codigo_impuesto;
                                }
                                imp.baseImponible           = Convert.ToDecimal(item_det.baseRetencion);
                                imp.porcentajeRetener       = Convert.ToDecimal(item_det.re_Porcen_retencion);
                                imp.valorRetenido           = Convert.ToDecimal(item_det.re_valor_retencion);
                                imp.codDocSustento          = item.IdOrden_giro_Tipo.ToString();
                                imp.numDocSustento          = item.co_serie.Substring(0, 3) + item.co_serie.Substring(4, 3) + item.co_factura;
                                imp.fechaEmisionDocSustento = string.Format("{0:dd/MM/yyyy}", item.co_fechaOg);//.Trim();
                                myObjectRete.impuestos.Add(imp);
                            }
                            // campos adicionales
                            if (item.pe_correo == null)
                            {
                                item.pe_correo = "";
                            }
                            fx_GeneradorXML_ValidarEmail_Info datosAdc = new fx_GeneradorXML_ValidarEmail_Info();

                            if (datosAdc.email_bien_escrito(item.pe_correo) == true)
                            {
                                myObjectRete.infoAdicional = new List <comprobanteRetencionCampoAdicional>();
                                comprobanteRetencionCampoAdicional compoadicional = new comprobanteRetencionCampoAdicional();
                                compoadicional.nombre = "MAIL";
                                compoadicional.Value  = item.pe_correo;
                                myObjectRete.infoAdicional.Add(compoadicional);
                            }



                            lista.Add(myObjectRete);
                        }

                        catch (Exception ex)
                        {
                        }
                    }

                    return(lista);
                }
            }
            catch (Exception ex)
            {
                return(new List <comprobanteRetencion>());
            }
        }
Ejemplo n.º 7
0
        List <guiaRemision> fx_GeneradorXML_IGuia.GetGuiaEfixed(DateTime FechaIni, DateTime FechaFin, string ConexionDBCliente, string OconEfirm, string FormatoFechaSRI, string formatoFechaDB)
        {
            DateTime Fi = Convert.ToDateTime(FechaIni.ToShortDateString());
            DateTime Ff = Convert.ToDateTime(FechaFin.ToShortDateString());
            string   sFi, sFf;

            sFi = string.Format(formatoFechaDB, Fi);
            sFf = string.Format(formatoFechaDB, Ff);


            try
            {
                List <guiaRemision> lista = new List <guiaRemision>();
                using (Entity_conexion_efixed context = new Entity_conexion_efixed())
                {
                    var guiaRemisions = context.vwfe_guia_remision.Where(v => v.gi_fecha >= Fi && v.gi_fecha <= Ff).ToList();
                    foreach (var item in guiaRemisions)
                    {
                        guiaRemision myObject = new guiaRemision();
                        myObject.version = "1.1.0";
                        myObject.id      = guiaRemisionID.comprobante;
                        infoTributaria info = new infoTributaria();
                        myObject.infoGuiaRemision = new guiaRemisionInfoGuiaRemision();
                        destinatario destinatario = new Info.class_sri.GuiaRemision.destinatario();

                        myObject.infoTributaria                 = info;
                        myObject.destinatarios                  = new guiaRemisionDestinatarios();
                        info.ambiente                           = "1";
                        myObject.infoTributaria.tipoEmision     = "1";
                        myObject.infoTributaria.razonSocial     = item.RazonSocial;
                        myObject.infoTributaria.nombreComercial = item.NombreComercial;
                        myObject.infoTributaria.ruc             = item.em_ruc;
                        myObject.infoTributaria.claveAcceso     = "0000000000000000000000000000000000000000000000000";
                        //*********************************************************************************
                        myObject.infoTributaria.codDoc                     = "06";
                        myObject.infoTributaria.estab                      = item.Serie1;
                        myObject.infoTributaria.ptoEmi                     = item.Serie2;
                        myObject.infoTributaria.secuencial                 = item.NumGuia_Preimpresa;
                        myObject.infoTributaria.dirMatriz                  = item.em_direccion;
                        myObject.infoGuiaRemision.dirEstablecimiento       = item.em_direccion;
                        myObject.infoGuiaRemision.dirPartida               = item.Direccion_Origen;
                        myObject.infoGuiaRemision.razonSocialTransportista = item.Nombre;
                        myObject.infoGuiaRemision.rucTransportista         = item.Cedula;
                        myObject.infoGuiaRemision.placa                    = item.placa;
                        if (item.Cedula.Length == 10)
                        {
                            myObject.infoGuiaRemision.tipoIdentificacionTransportista = "05";
                        }

                        if (item.Cedula.Length == 13)
                        {
                            myObject.infoGuiaRemision.tipoIdentificacionTransportista = "04";
                        }

                        myObject.infoGuiaRemision.fechaIniTransporte = string.Format("{0:dd/MM/yyyy}", item.gi_FechaInicioTraslado);
                        myObject.infoGuiaRemision.fechaFinTransporte = string.Format("{0:dd/MM/yyyy}", item.gi_FechaFinTraslado);
                        if (item.ContribuyenteEspecial != "")
                        {
                            myObject.infoGuiaRemision.contribuyenteEspecial = item.ContribuyenteEspecial;
                        }

                        var facturas_x_guias = context.vwfe_guia_remision_x_factura.Where(v => v.IdEmpresa == item.IdEmpresa && v.IdGuiaRemision == item.IdGuiaRemision).ToList();
                        myObject.destinatarios.destinatario = new List <destinatario>();

                        destinatario.identificacionDestinatario = item.pe_cedulaRuc;
                        destinatario.razonSocialDestinatario    = item.pe_nombreCompleto;
                        destinatario.dirDestinatario            = item.Direccion;
                        destinatario.motivoTraslado             = item.tr_Descripcion;
                        destinatario.codEstabDestino            = "001";
                        destinatario.ruta = item.ruta == "" ? "S/N" : item.ruta;
                        foreach (var item_fac in facturas_x_guias)
                        {
                            destinatario.codDocSustento = "01";
                            destinatario.numDocSustento = item.vt_serie1 + "-" + item_fac.vt_serie2 + "-" + item_fac.vt_NumFactura;

                            if (item_fac.vt_autorizacion != null)
                            {
                                if (item_fac.vt_autorizacion.Length > 10)
                                {
                                    destinatario.numAutDocSustento = item_fac.vt_autorizacion.Substring(0, 10);
                                }
                            }

                            destinatario.fechaEmisionDocSustento = string.Format("{0:dd/MM/yyyy}", item.gi_fecha);
                        }
                        myObject.destinatarios.destinatario.Add(destinatario);
                        var guia_detalle = context.vwfe_guia_remision_detalle.Where(v => v.IdEmpresa == item.IdEmpresa && v.IdGuiaRemision == item.IdGuiaRemision).ToList();
                        destinatario.detalles         = new destinatarioDetalles();
                        destinatario.detalles.detalle = new List <detalle>();
                        foreach (var item_det in guia_detalle)
                        {
                            destinatario.detalles.detalle.Add(new detalle
                            {
                                codigoAdicional = item_det.pr_codigo,
                                codigoInterno   = item_det.pr_codigo,
                                descripcion     = item_det.pr_descripcion,
                                cantidad        = Convert.ToDecimal(item_det.gi_cantidad),
                            });
                        }
                        // campos adicionales

                        fx_GeneradorXML_ValidarEmail_Info datosAdc = new fx_GeneradorXML_ValidarEmail_Info();
                        if (item.Correo != null && item.Correo != "")
                        {
                            if (myObject.infoAdicional == null)
                            {
                                myObject.infoAdicional = new List <guiaRemisionCampoAdicional>();
                            }

                            guiaRemisionCampoAdicional compoadicional = new guiaRemisionCampoAdicional();
                            compoadicional.nombre = "MAIL";
                            compoadicional.Value  = item.Correo;
                            myObject.infoAdicional.Add(compoadicional);
                        }
                        if (item.Telefono != null && item.Telefono != "")
                        {
                            if (myObject.infoAdicional == null)
                            {
                                myObject.infoAdicional = new List <guiaRemisionCampoAdicional>();
                            }

                            guiaRemisionCampoAdicional compoadicional = new guiaRemisionCampoAdicional();
                            compoadicional.nombre = "TELEFONO";
                            compoadicional.Value  = item.Telefono;
                            myObject.infoAdicional.Add(compoadicional);
                        }
                        lista.Add(myObject);
                    }
                }
                return(lista);
            }
            catch (Exception ex)
            {
                return(new List <guiaRemision>());
            }
        }
Ejemplo n.º 8
0
        List <liquidacionCompra> fx_GeneradorXML_ILiquidacionComp_Data.GenerarXmlFactura(DateTime FechaIni, DateTime FechaFin, string ConexionDBCliente, string OconEfirm, string FormatoFechaSRI, string formatoFechaDB)
        {
            DateTime Fi = Convert.ToDateTime(FechaIni.ToShortDateString());
            DateTime Ff = Convert.ToDateTime(FechaFin.ToShortDateString());

            //string sFi, sFf;
            //sFi = string.Format(formatoFechaDB, Fi);
            //sFf = string.Format(formatoFechaDB, Ff);


            try
            {
                List <liquidacionCompra> lista = new List <liquidacionCompra>();
                using (Entity_conexion_efixed context = new Entity_conexion_efixed())
                {
                    var liquidacion_og = context.vwfe_liquidacion_compra.Where(v => v.co_FechaFactura >= Fi && v.co_FechaFactura <= Ff);
                    foreach (var item in liquidacion_og)
                    {
                        liquidacionCompra myObject = new liquidacionCompra();
                        myObject.version     = "1.1.0";
                        myObject.id          = liquidacionCompraID.comprobante;
                        myObject.idSpecified = true;
                        infoTributaria info = new infoTributaria();
                        myObject.infoLiquidacionCompra = new liquidacionCompraInfoLiquidacionCompra();
                        myObject.infoLiquidacionCompra.totalConImpuestos = new List <liquidacionCompraInfoLiquidacionCompraTotalImpuesto>();
                        myObject.infoLiquidacionCompra.pagos             = new List <pagosPago>();
                        pagosPago Pago = new pagosPago();
                        myObject.infoTributaria = info;
                        myObject.detalles       = new List <liquidacionCompraDetalle>();
                        liquidacionCompraInfoLiquidacionCompraTotalImpuesto impuesto = null;
                        info.ambiente = "1";
                        myObject.infoTributaria.tipoEmision     = "1";
                        myObject.infoTributaria.razonSocial     = item.RazonSocial;
                        myObject.infoTributaria.nombreComercial = item.NombreComercial;
                        myObject.infoTributaria.ruc             = item.em_ruc;
                        myObject.infoTributaria.claveAcceso     = "0000000000000000000000000000000000000000000000000";
                        //*********************************************************************************
                        myObject.infoTributaria.codDoc                    = "03";
                        myObject.infoTributaria.estab                     = item.co_serie.Substring(0, 3);
                        myObject.infoTributaria.ptoEmi                    = item.co_serie.Substring(4, 3);
                        myObject.infoTributaria.secuencial                = item.co_factura;
                        myObject.infoTributaria.dirMatriz                 = item.em_direccion;
                        myObject.infoLiquidacionCompra.fechaEmision       = string.Format("{0:dd/MM/yyyy}", item.co_FechaFactura);
                        myObject.infoLiquidacionCompra.dirEstablecimiento = item.em_direccion;
                        if (item.ContribuyenteEspecial != "")
                        {
                            // myObject.infoLiquidacionCompra.contribuyenteEspecial = item.ContribuyenteEspecial;
                        }

                        myObject.infoLiquidacionCompra.obligadoContabilidadSpecified = true;
                        myObject.infoLiquidacionCompra.obligadoContabilidad          = obligadoContabilidad.SI;
                        if (item.IdTipoDocumento == "RUC")
                        {
                            myObject.infoLiquidacionCompra.tipoIdentificacionProveedor = "04";
                        }

                        if (item.IdTipoDocumento == "PAS")
                        {
                            myObject.infoLiquidacionCompra.tipoIdentificacionProveedor = "06";
                        }

                        if (item.IdTipoDocumento == "CED")
                        {
                            myObject.infoLiquidacionCompra.tipoIdentificacionProveedor = "05";
                        }
                        myObject.infoLiquidacionCompra.identificacionProveedor = item.pe_cedulaRuc;
                        myObject.infoLiquidacionCompra.razonSocialProveedor    = (item.pe_nombreCompleto.ToString()).Trim();
                        myObject.infoLiquidacionCompra.identificacionProveedor = item.pe_cedulaRuc;
                        myObject.infoLiquidacionCompra.direccionProveedor      = item.pe_direccion;
                        myObject.infoLiquidacionCompra.totalSinImpuestos       = Convert.ToDecimal(item.co_subtotal_iva + item.co_subtotal_siniva);


                        //valor total de la factura
                        myObject.infoLiquidacionCompra.importeTotal = Convert.ToDecimal(item.co_total);
                        myObject.infoLiquidacionCompra.moneda       = "DOLAR";

                        //forma de pago quemada por decisión del cliente, siempre va a usar esta forma de pago
                        Pago.formaPago      = "20";
                        Pago.total          = Convert.ToDecimal(item.co_total);
                        Pago.plazoSpecified = true;
                        Pago.plazo          = item.co_plazo;
                        Pago.unidadTiempo   = "Días";
                        myObject.infoLiquidacionCompra.pagos.Add(Pago);



                        if (item.co_subtotal_siniva != 0)
                        {
                            myObject.infoLiquidacionCompra.totalConImpuestos.Add(
                                new liquidacionCompraInfoLiquidacionCompraTotalImpuesto
                            {
                                codigo           = "2",
                                baseImponible    = Convert.ToDecimal(item.co_subtotal_iva),
                                codigoPorcentaje = "1",
                                valor            = Convert.ToDecimal(item.co_valoriva)
                            });
                        }
                        if (item.co_subtotal_iva != 0)
                        {
                            myObject.infoLiquidacionCompra.totalConImpuestos.Add(
                                new liquidacionCompraInfoLiquidacionCompraTotalImpuesto
                            {
                                codigo           = "2",
                                baseImponible    = Convert.ToDecimal(item.co_subtotal_iva),
                                codigoPorcentaje = "2",
                                valor            = Convert.ToDecimal(item.co_valoriva)
                            });
                        }
                        var facturas_detalle = context.vwfe_liquidacion_compra_det.Where(v => v.IdEmpresa == item.IdEmpresa &&
                                                                                         v.IdTipoCbte_Ogiro == item.IdTipoCbte_Ogiro &&
                                                                                         v.IdCbteCble_Ogiro == item.IdCbteCble_Ogiro &&
                                                                                         v.IdSucursal == item.IdSucursal &&
                                                                                         v.IdBodega == item.IdBodega
                                                                                         );
                        decimal totalDescuento = 0;
                        foreach (var item_det in facturas_detalle)
                        {
                            impuesto imp = new impuesto();
                            liquidacionCompraDetalle fDetalle = new liquidacionCompraDetalle();
                            fDetalle.codigoPrincipal        = item_det.pr_codigo;
                            fDetalle.codigoAuxiliar         = item_det.pr_codigo;
                            fDetalle.descripcion            = item_det.pr_descripcion;
                            fDetalle.cantidad               = Convert.ToDecimal(item_det.Cantidad);
                            fDetalle.precioUnitario         = Convert.ToDecimal(item_det.CostoUni);
                            fDetalle.descuento              = Convert.ToDecimal(Convert.ToDouble(item_det.Cantidad) * item_det.DescuentoUni);
                            totalDescuento                  = totalDescuento + fDetalle.descuento;
                            fDetalle.precioTotalSinImpuesto = Convert.ToDecimal(item_det.Subtotal);

                            if (item_det.PorIva == 12)
                            {
                                imp.codigo           = "2";
                                imp.codigoPorcentaje = "2";
                                imp.tarifa           = Convert.ToDecimal(item_det.PorIva);
                                imp.baseImponible    = Convert.ToDecimal(item_det.Subtotal);
                                imp.valor            = Convert.ToDecimal(item_det.ValorIva);
                            }
                            if (item_det.PorIva == 0)
                            {
                                imp.codigo           = "2";
                                imp.codigoPorcentaje = "0";
                                imp.tarifa           = Convert.ToDecimal(item_det.PorIva);
                                imp.baseImponible    = Convert.ToDecimal(item_det.Subtotal);
                                imp.valor            = Convert.ToDecimal(item_det.ValorIva);
                            }

                            fDetalle.impuestos = new List <impuesto>();
                            fDetalle.impuestos.Add(imp);
                            myObject.detalles.Add(fDetalle);
                        }
                        myObject.infoLiquidacionCompra.totalDescuento = Convert.ToDecimal(totalDescuento);
                        myObject.infoLiquidacionCompra.totalDescuento = totalDescuento;
                        // campos adicionales

                        fx_GeneradorXML_ValidarEmail_Info datosAdc = new fx_GeneradorXML_ValidarEmail_Info();
                        if (item.pe_correo != null && item.pe_correo != "")
                        {
                            if (myObject.infoAdicional == null)
                            {
                                myObject.infoAdicional = new List <liquidacionCompraCampoAdicional>();
                            }
                            liquidacionCompraCampoAdicional compoadicional = new liquidacionCompraCampoAdicional();
                            compoadicional.nombre = "MAIL";
                            compoadicional.Value  = item.pe_correo;
                            myObject.infoAdicional.Add(compoadicional);
                        }

                        if (item.co_observacion != null && item.co_observacion != "")
                        {
                            if (myObject.infoAdicional == null)
                            {
                                myObject.infoAdicional = new List <liquidacionCompraCampoAdicional>();
                            }
                            liquidacionCompraCampoAdicional compoadicional = new liquidacionCompraCampoAdicional();
                            compoadicional.nombre = "NOTA: ";
                            compoadicional.Value  = item.co_observacion;
                            myObject.infoAdicional.Add(compoadicional);
                        }

                        lista.Add(myObject);
                    }
                }

                return(lista);
            }
            catch (Exception ex)
            {
                return(new List <liquidacionCompra>());
            }
        }
Ejemplo n.º 9
0
        public List <notaCredito> GenerarXmlNotaCredito(DateTime FechaIni, DateTime FechaFin, string ConexionDBCliente, string OconEfirm, string FormatoFechaSRI, string formatoFechaDB)
        {
            DateTime Fi = Convert.ToDateTime(FechaIni.ToShortDateString());
            DateTime Ff = Convert.ToDateTime(FechaFin.ToShortDateString());

            //string sFi, sFf;
            //sFi = string.Format(formatoFechaDB, Fi);
            //sFf = string.Format(formatoFechaDB, Ff);


            try
            {
                List <notaCredito> lista = new List <notaCredito>();
                using (Entity_conexion_efixed context = new Entity_conexion_efixed())
                {
                    var nota_credito = context.vwfe_nota_credito.Where(v => v.no_fecha >= Fi && v.no_fecha <= Ff);
                    foreach (var item in nota_credito)
                    {
                        notaCredito myObject = new notaCredito();
                        totalConImpuestosTotalImpuesto impuesto = null;
                        myObject.version = "1.1.0";
                        myObject.id      = new notaCreditoID();
                        infoTributaria info = new infoTributaria();
                        myObject.infoNotaCredito = new notaCreditoInfoNotaCredito();
                        myObject.infoNotaCredito.totalConImpuestos = new List <totalConImpuestosTotalImpuesto>();
                        myObject.infoTributaria                 = info;
                        myObject.detalles                       = new List <notaCreditoDetalle>();
                        info.ambiente                           = "1";
                        myObject.infoTributaria.tipoEmision     = "1";
                        myObject.infoTributaria.razonSocial     = item.NombreComercial.Trim().ToString().Replace("S.A", "");;
                        myObject.infoTributaria.nombreComercial = item.NombreComercial.Trim().ToString().Replace("S.A", "");;
                        myObject.infoTributaria.ruc             = item.em_ruc;
                        myObject.infoTributaria.claveAcceso     = "0000000000000000000000000000000000000000000000000";
                        //*********************************************************************************
                        myObject.infoTributaria.codDoc              = "04";
                        myObject.infoTributaria.estab               = item.Serie1;
                        myObject.infoTributaria.ptoEmi              = item.Serie2;
                        myObject.infoTributaria.secuencial          = item.NumNota_Impresa;
                        myObject.infoTributaria.dirMatriz           = item.em_direccion;
                        myObject.infoNotaCredito.fechaEmision       = string.Format("{0:dd/MM/yyyy}", item.no_fecha);
                        myObject.infoNotaCredito.dirEstablecimiento = item.em_direccion;
                        if (item.ContribuyenteEspecial != "")
                        {
                            myObject.infoNotaCredito.contribuyenteEspecial = item.ContribuyenteEspecial;
                        }
                        myObject.infoNotaCredito.obligadoContabilidad    = obligadoContabilidad.SI.ToString();
                        myObject.infoNotaCredito.codDocModificado        = "01";
                        myObject.infoNotaCredito.numDocModificado        = item.vt_serie1 + "-" + item.vt_serie2 + "-" + item.vt_NumFactura;
                        myObject.infoNotaCredito.fechaEmisionDocSustento = string.Format("{0:dd/MM/yyyy}", item.vt_fecha);
                        myObject.infoNotaCredito.motivo = item.sc_observacion;
                        if (item.IdTipoDocumento == "RUC")
                        {
                            myObject.infoNotaCredito.tipoIdentificacionComprador = "04";
                        }

                        if (item.IdTipoDocumento == "PAS")
                        {
                            myObject.infoNotaCredito.tipoIdentificacionComprador = "06";
                        }

                        if (item.IdTipoDocumento == "CED")
                        {
                            myObject.infoNotaCredito.tipoIdentificacionComprador = "05";
                        }

                        myObject.infoNotaCredito.razonSocialComprador    = item.pe_nombreCompleto.ToString().Trim();
                        myObject.infoNotaCredito.identificacionComprador = item.pe_cedulaRuc;
                        myObject.infoNotaCredito.dirEstablecimiento      = item.em_direccion;
                        myObject.infoNotaCredito.totalSinImpuestos       = Convert.ToDecimal(item.total_sin_impuesto);
                        myObject.infoNotaCredito.valorModificacion       = Convert.ToDecimal(item.importeTotal);

                        //valor total de la factura
                        myObject.infoNotaCredito.valorModificacion = Convert.ToDecimal(item.importeTotal);
                        myObject.infoNotaCredito.moneda            = "DOLAR";


                        var facturas_imuestos = context.vwfe_nota_credito_impuestos.Where(v => v.IdEmpresa == item.IdEmpresa && v.IdSucursal == item.IdSucursal && v.IdBodega == item.IdBodega && v.IdNota == item.IdNota).ToList();
                        foreach (var item_imp in facturas_imuestos)
                        {
                            impuesto        = new totalConImpuestosTotalImpuesto();
                            impuesto.codigo = "2";
                            if (item_imp.vt_por_iva == 0)
                            {
                                impuesto.codigoPorcentaje = "0";
                            }
                            if (item_imp.vt_por_iva == 12)
                            {
                                impuesto.codigoPorcentaje = "2";
                            }
                            if (item_imp.vt_por_iva == 14)
                            {
                                impuesto.codigoPorcentaje = "3";
                            }
                            impuesto.baseImponible = Convert.ToDecimal(item_imp.Base_imponible);
                            impuesto.valor         = Convert.ToDecimal(item_imp.impuesto);
                            myObject.infoNotaCredito.totalConImpuestos.Add(impuesto);
                        }


                        var facturas_detalle = context.vwfe_nota_credito_detalle.Where(v => v.IdEmpresa == item.IdEmpresa && v.IdSucursal == item.IdSucursal && v.IdBodega == item.IdBodega && v.IdNota == item.IdNota).ToList();

                        foreach (var item_det in facturas_detalle)
                        {
                            impuesto           imp      = new impuesto();
                            notaCreditoDetalle fDetalle = new notaCreditoDetalle();
                            fDetalle.codigoInterno          = item_det.pr_codigo;
                            fDetalle.codigoAdicional        = item_det.pr_codigo;
                            fDetalle.descripcion            = item_det.pr_descripcion;
                            fDetalle.cantidad               = Convert.ToDecimal(item_det.sc_cantidad);
                            fDetalle.precioUnitario         = Convert.ToDecimal(item_det.sc_Precio);
                            fDetalle.descuento              = Convert.ToDecimal(item_det.sc_descUni * Convert.ToDecimal(item_det.sc_cantidad));
                            fDetalle.descuentoSpecified     = true;
                            fDetalle.precioTotalSinImpuesto = Convert.ToDecimal(item_det.sc_subtotal);

                            if (item_det.sc_observacion != null && item_det.sc_observacion != "")
                            {
                                fDetalle.detallesAdicionales = new List <notaCreditoDetalleDetAdicional>();
                                fDetalle.detallesAdicionales.Add(new notaCreditoDetalleDetAdicional
                                {
                                    nombre = "Detalle",
                                    valor  = item_det.sc_observacion
                                }
                                                                 );
                            }


                            if (item_det.vt_por_iva == 12)
                            {
                                imp.codigo           = "2";
                                imp.codigoPorcentaje = "2";
                                imp.tarifa           = Convert.ToDecimal(item_det.vt_por_iva);
                                imp.baseImponible    = Convert.ToDecimal(item_det.sc_subtotal);
                                imp.valor            = Convert.ToDecimal(item_det.sc_iva);
                            }

                            if (item_det.vt_por_iva == 14)
                            {
                                imp.codigo           = "2";
                                imp.codigoPorcentaje = "3";
                                imp.tarifa           = Convert.ToDecimal(item_det.vt_por_iva);
                                imp.baseImponible    = Convert.ToDecimal(item_det.sc_subtotal);
                                imp.valor            = Convert.ToDecimal(item_det.sc_iva);
                            }
                            if (item_det.vt_por_iva == 0)
                            {
                                imp.codigo           = "2";
                                imp.codigoPorcentaje = "0";
                                imp.tarifa           = Convert.ToDecimal(item_det.vt_por_iva);
                                imp.baseImponible    = Convert.ToDecimal(item_det.sc_subtotal);
                                imp.valor            = Convert.ToDecimal(item_det.sc_iva);
                            }

                            fDetalle.impuestos = new List <impuesto>();
                            fDetalle.impuestos.Add(imp);
                            myObject.detalles.Add(fDetalle);
                        }


                        // campos adicionales

                        fx_GeneradorXML_ValidarEmail_Info datosAdc = new fx_GeneradorXML_ValidarEmail_Info();
                        if (item.Correo != null && item.Correo != "")
                        {
                            if (myObject.infoAdicional == null)
                            {
                                myObject.infoAdicional = new List <notaCreditoCampoAdicional>();
                            }
                            notaCreditoCampoAdicional compoadicional = new notaCreditoCampoAdicional();
                            compoadicional.nombre = "MAIL";
                            compoadicional.Value  = item.Correo;
                            myObject.infoAdicional.Add(compoadicional);
                        }

                        lista.Add(myObject);
                    }
                }
                return(lista);
            }
            catch (Exception ex)
            {
                return(new List <notaCredito>());
            }
        }
        public List <factura> GenerarXmlFactura(DateTime FechaIni, DateTime FechaFin, string ConexionDBCliente, string OconEfirm, string FormatoFechaSRI, string formatoFechaDB)
        {
            #region conexion de base detos efrim
            try
            {
                using (SqlConnection co = new SqlConnection(OconEfirm))
                {
                    co.Open();
                    sql = "select RUC,RAZONSOCIAL,NOMBRECOMERCIAL,DIRMATRIZ,CONTRIBUYENTEESPECIAL from tb_Empresa where RUC ='0992496797001'";
                    SqlCommand    cmd    = new SqlCommand(sql, co);
                    SqlDataReader reader = cmd.ExecuteReader();
                    if (reader.Read())
                    {
                        ruc        = reader.GetString(0);
                        Rz         = reader.GetString(1);
                        Nomcom     = reader.GetString(2);
                        direccion  = reader.GetString(3);
                        contspecia = reader.GetString(4);
                    }
                    co.Close();
                    reader.Close();
                }
            }
            catch (Exception ex)
            {
            }
            #endregion



            DateTime Fi = Convert.ToDateTime(FechaIni.ToShortDateString());
            DateTime Ff = Convert.ToDateTime(FechaFin.ToShortDateString());
            string   sFi, sFf;
            sFi = string.Format(formatoFechaDB, Fi);
            sFf = string.Format(formatoFechaDB, Ff);
            List <factura> facAux0 = new List <factura>();

            //Generación de la Factura de Expoguayaquil.
            try
            {
                List <factura> lista = new List <factura>();
                using (SqlConnection conexion = new SqlConnection(ConexionDBCliente))
                {
                    conexion.Open();
                    string        sqlcabFact = "select * from ELECTRONICA_FAC_CABECERA_NEW where fechaEmision between '" + sFi + "' and '" + sFf + "'";
                    SqlCommand    cmdcabFact = new SqlCommand(sqlcabFact, conexion);
                    SqlDataReader dtrcabFact = cmdcabFact.ExecuteReader();

                    while (dtrcabFact.Read())
                    {
                        try
                        {
                            string Ruc = "";

                            factura myObject = new factura();
                            myObject.version     = "1.1.0";
                            myObject.id          = facturaID.comprobante;
                            myObject.idSpecified = true;
                            infoTributaria info = new infoTributaria();
                            myObject.infoFactura = new facturaInfoFactura();
                            myObject.infoFactura.totalConImpuestos = new List <facturaInfoFacturaTotalImpuesto>();
                            myObject.infoFactura.pagos             = new List <pagosPago>();
                            pagosPago Pago = new pagosPago();

                            myObject.infoTributaria = info;
                            myObject.detalles       = new List <facturaDetalle>();
                            facturaInfoFacturaTotalImpuesto impuesto = null;
                            info.ambiente = "1";
                            myObject.infoTributaria.tipoEmision     = "1";
                            myObject.infoTributaria.razonSocial     = Rz;
                            myObject.infoTributaria.nombreComercial = Nomcom;
                            myObject.infoTributaria.ruc             = ruc;
                            myObject.infoTributaria.claveAcceso     = "0000000000000000000000000000000000000000000000000";
                            //*********************************************************************************
                            myObject.infoTributaria.codDoc                     = "01";
                            myObject.infoTributaria.estab                      = dtrcabFact.GetString(4);
                            myObject.infoTributaria.ptoEmi                     = dtrcabFact.GetString(5);
                            myObject.infoTributaria.secuencial                 = dtrcabFact.GetString(3).PadLeft(9, '0');
                            myObject.infoTributaria.dirMatriz                  = direccion;
                            myObject.infoFactura.fechaEmision                  = string.Format("{0:dd/MM/yyyy}", dtrcabFact.GetDateTime(0));
                            myObject.infoFactura.dirEstablecimiento            = direccion;
                            myObject.infoFactura.contribuyenteEspecial         = contspecia;
                            myObject.infoFactura.obligadoContabilidadSpecified = true;
                            myObject.infoFactura.obligadoContabilidad          = obligadoContabilidad.SI;
                            myObject.infoFactura.tipoIdentificacionComprador   = dtrcabFact.GetString(1);
                            myObject.infoFactura.razonSocialComprador          = dtrcabFact.GetString(2);
                            myObject.infoFactura.identificacionComprador       = Convert.ToString(dtrcabFact.GetString(10));
                            myObject.infoFactura.direccionComprador            = Convert.ToString(dtrcabFact.GetString(12));
                            myObject.infoFactura.totalSinImpuestos             = dtrcabFact.GetDecimal(7);
                            myObject.infoFactura.totalDescuento                = dtrcabFact.GetDecimal(9);

                            //campos de propina
                            myObject.infoFactura.propinaSpecified = true;
                            myObject.infoFactura.propina          = 0;

                            //valor total de la factura
                            myObject.infoFactura.importeTotal = Convert.ToDecimal(dtrcabFact.GetDecimal(6));
                            myObject.infoFactura.moneda       = "DOLAR";

                            //forma de pago quemada por decisión del cliente, siempre va a usar esta forma de pago
                            Pago.formaPago      = (dtrcabFact.IsDBNull(13) == true) ? "01" : dtrcabFact.GetString(13);
                            Pago.total          = Convert.ToDecimal(dtrcabFact.GetDecimal(6));
                            Pago.plazoSpecified = true;
                            Pago.plazo          = (dtrcabFact.IsDBNull(14) == true) ? 1 : (Convert.ToDecimal(dtrcabFact.GetInt32(14)));
                            Pago.unidadTiempo   = (dtrcabFact.IsDBNull(15) == true) ? "día" : dtrcabFact.GetString(15);

                            myObject.infoFactura.pagos.Add(Pago);

                            using (SqlConnection conexion2 = new SqlConnection(ConexionDBCliente))
                            {
                                string SFecha_busqueda = string.Format(formatoFechaDB, dtrcabFact.GetDateTime(0));
                                conexion2.Open();
                                string        SQLTot_impuesto = "select * from ELECTRONICA_FAC_TOT_IMPUESTOS  where secuencial='" + dtrcabFact.GetString(16) + "'";
                                SqlCommand    cmdTotImpuesto  = new SqlCommand(SQLTot_impuesto, conexion2);
                                SqlDataReader dtrTotImpuesto  = cmdTotImpuesto.ExecuteReader();
                                while (dtrTotImpuesto.Read())
                                {
                                    impuesto = new facturaInfoFacturaTotalImpuesto();

                                    impuesto.codigo           = dtrTotImpuesto.GetString(1);
                                    impuesto.codigoPorcentaje = dtrTotImpuesto.GetString(2);
                                    if (dtrTotImpuesto.GetString(2) == "0")
                                    {
                                        impuesto.baseImponible = dtrTotImpuesto.GetDecimal(5);
                                    }
                                    else
                                    {
                                        if (dtrTotImpuesto.GetString(2) == "2")
                                        {
                                            impuesto.baseImponible = dtrTotImpuesto.GetDecimal(4);
                                        }
                                        else
                                        if (dtrTotImpuesto.GetString(2) == "3")
                                        {
                                            impuesto.baseImponible = dtrTotImpuesto.GetDecimal(3);
                                        }
                                    }

                                    impuesto.valor = dtrTotImpuesto.GetDecimal(6);
                                    myObject.infoFactura.totalConImpuestos.Add(impuesto);
                                }
                            }

                            using (SqlConnection conexion1 = new SqlConnection(ConexionDBCliente))
                            {
                                string sqlDetalleFac = "";
                                conexion1.Open();
                                // sentencia para extraer detalle de factura

                                if (dtrcabFact.GetInt32(11) == 0)
                                {
                                    sqlDetalleFac = "select * from ELECTRONICA_FAC_DETALLE where secuencial='" + dtrcabFact.GetString(16) + "' ";
                                }
                                else
                                {
                                    sqlDetalleFac = "select * from ELECTRONICA_FAC_DETALLE_S where secuencial='" + dtrcabFact.GetString(16) + "' ";
                                }
                                SqlCommand    cmdDetalleFac = new SqlCommand(sqlDetalleFac, conexion1);
                                SqlDataReader dtrDetalleFac = cmdDetalleFac.ExecuteReader();
                                while (dtrDetalleFac.Read())
                                {
                                    impuesto       imp      = new impuesto();
                                    facturaDetalle fDetalle = new facturaDetalle();
                                    fDetalle.codigoPrincipal = dtrDetalleFac.GetString(1);
                                    fDetalle.codigoAuxiliar  = dtrDetalleFac.GetString(1);
                                    fDetalle.descripcion     = dtrDetalleFac.GetString(5);
                                    fDetalle.cantidad        = Convert.ToDecimal(dtrDetalleFac.GetDecimal(2));
                                    fDetalle.precioUnitario  = Convert.ToDecimal(dtrDetalleFac.GetDecimal(3));

                                    fDetalle.descuento = dtrDetalleFac.GetDecimal(8);

                                    fDetalle.precioTotalSinImpuesto = Convert.ToDecimal(dtrDetalleFac.GetDecimal(4));
                                    if (dtrDetalleFac.GetString(6) == "VS-12%")
                                    {
                                        imp.codigo           = "2";
                                        imp.codigoPorcentaje = "2";
                                        imp.tarifa           = 12;
                                        imp.baseImponible    = dtrDetalleFac.GetDecimal(4);
                                        imp.valor            = dtrDetalleFac.GetDecimal(7);
                                    }
                                    else
                                    if (dtrDetalleFac.GetString(6) == "VS-14%")
                                    {
                                        imp.codigo           = "2";
                                        imp.codigoPorcentaje = "3";
                                        imp.tarifa           = 14;
                                        imp.baseImponible    = dtrDetalleFac.GetDecimal(4);
                                        imp.valor            = dtrDetalleFac.GetDecimal(7);
                                    }
                                    else
                                    {
                                        imp.codigo           = "2";
                                        imp.codigoPorcentaje = "0";
                                        imp.tarifa           = 0;
                                        imp.baseImponible    = dtrDetalleFac.GetDecimal(4);
                                        imp.valor            = dtrDetalleFac.GetDecimal(7);
                                    }
                                    if (dtrDetalleFac.IsDBNull(9) == false)
                                    {
                                        campoAdicional = dtrDetalleFac.GetString(9);
                                    }

                                    fDetalle.impuestos = new List <impuesto>();
                                    fDetalle.impuestos.Add(imp);
                                    myObject.detalles.Add(fDetalle);
                                }


                                // campos adicionales

                                fx_GeneradorXML_ValidarEmail_Info datosAdc = new fx_GeneradorXML_ValidarEmail_Info();
                                if (campoAdicional != null)
                                {
                                    if (datosAdc.email_bien_escrito(campoAdicional) == true)
                                    {
                                        facturaCampoAdicional compoadicional = new facturaCampoAdicional();
                                        compoadicional.nombre  = "MAIL";
                                        compoadicional.Value   = campoAdicional;
                                        myObject.infoAdicional = new List <facturaCampoAdicional>();
                                        myObject.infoAdicional.Add(compoadicional);
                                    }
                                }
                                dtrDetalleFac.Close();
                                conexion1.Close();
                                lista.Add(myObject);
                                facAux0 = lista;
                            }
                        }
                        catch (Exception ex)
                        {
                        }
                    }
                    dtrcabFact.Close();
                    conexion.Close();
                }
                return(lista);
            }
            catch (Exception ex)
            {
                // MessageBox.Show(ex.Message);
                return(facAux0);
            }
        }