Esempio n. 1
0
 public fx_GeneradorXML_Comprobante_Info(string _IdComprobante, DateTime _Fecha, eTipoComprobante _TipoCbte
                                         , string _Observacion, comprobanteRetencion _cbteRet)
 {
     IdComprobante = _IdComprobante;
     Fecha         = _Fecha;
     TipoCbte      = _TipoCbte;
     Observacion   = _Observacion;
     cbteRet       = _cbteRet;
 }
Esempio n. 2
0
 public TipoComprobante_Info()
 {
     CbteFactura        = new factura();
     CbteFactura_evento = new factura();
     cbteRet            = new comprobanteRetencion();
     cbteNC             = new notaCredito();
     cbteDeb            = new notaDebito();
     cbtGR = new guiaRemision();
 }
Esempio n. 3
0
 public Comprobante_Info(string _IdComprobante, DateTime _Fecha, Core.Erp.Info.General.Cl_Enumeradores.eTipoComprobante _TipoCbte
                         , string _Observacion, comprobanteRetencion _cbteRet)
 {
     IdComprobante = _IdComprobante;
     Fecha         = _Fecha;
     TipoCbte      = _TipoCbte;
     Observacion   = _Observacion;
     cbteRet       = _cbteRet;
 }
Esempio n. 4
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>());
            }
        }
Esempio n. 5
0
        public List <comprobanteRetencion> GenerarXmlRetencion(List <cp_XML_Documento_Info> consulta, int IdEmpresa, decimal IdDocumento)
        {
            try
            {
                string secuencia_aux = "";
                string secuencia     = "";

                List <comprobanteRetencion> lista = new List <comprobanteRetencion>();
                EntitiesCuentasxPagar       ECXP  = new EntitiesCuentasxPagar();


                foreach (var item in consulta)
                {
                    comprobanteRetencion myObjectRete = new comprobanteRetencion();

                    myObjectRete.version                        = "1.0.0";
                    myObjectRete.idSpecified                    = true;
                    myObjectRete.infoTributaria                 = new infoTributaria();
                    myObjectRete.infoCompRetencion              = new comprobanteRetencionInfoCompRetencion();
                    myObjectRete.impuestos                      = new List <Info.class_sri.Retencion.impuesto>();
                    myObjectRete.infoTributaria.ambiente        = "1";
                    myObjectRete.infoTributaria.tipoEmision     = "1";
                    myObjectRete.infoTributaria.razonSocial     = item.RazonSocial.Trim();     //empresa validar
                    myObjectRete.infoTributaria.nombreComercial = item.NombreComercial.Trim(); //empresa validar
                    myObjectRete.infoTributaria.ruc             = item.em_ruc.Trim();          //empresa validar
                    myObjectRete.infoTributaria.claveAcceso     = "0000000000000000000000000000000000000000000000000";
                    myObjectRete.infoTributaria.codDoc          = "07";


                    //validar secuencial retencion
                    secuencia_aux = "";
                    secuencia     = "";

                    if (!String.IsNullOrEmpty(item.ret_NumeroDocumento))
                    {
                        if (item.ret_NumeroDocumento.Length < 9)
                        {
                            int conta      = item.ret_NumeroDocumento.Length;
                            int diferencia = 9 - conta;

                            secuencia_aux = secuencia_aux.PadLeft(diferencia, '0');
                            secuencia     = secuencia_aux + item.ret_NumeroDocumento;

                            item.ret_NumeroDocumento = secuencia;
                        }
                    }

                    string[] serie = Convert.ToString(item.serie).Split('-');

                    myObjectRete.infoTributaria.estab  = serie[0].Trim();  // retencion
                    myObjectRete.infoTributaria.ptoEmi = serie[1].Trim();; // retencion


                    myObjectRete.infoTributaria.secuencial = item.ret_NumeroDocumento; // retencion validar ceros a la izquierda

                    myObjectRete.infoTributaria.dirMatriz = item.em_direccion.Trim();  //empresa validar


                    myObjectRete.infoCompRetencion.fechaEmision = Convert.ToDateTime(item.ret_Fecha).Date.ToString("dd/MM/yyyy"); // factura


                    myObjectRete.infoCompRetencion.dirEstablecimiento    = item.em_direccion;          ///sucursal
                    myObjectRete.infoCompRetencion.contribuyenteEspecial = item.ContribuyenteEspecial; //empresa
                    myObjectRete.infoCompRetencion.obligadoContabilidad  = (item.ObligadoAllevarConta == "S" || item.ObligadoAllevarConta == "SI") ? "SI" : "NO";

                    switch (item.IdTipoDocumento)
                    {
                    case "CED":
                        myObjectRete.infoCompRetencion.tipoIdentificacionSujetoRetenido = "05";
                        break;

                    case "PAS":
                        myObjectRete.infoCompRetencion.tipoIdentificacionSujetoRetenido = "06";
                        break;

                    case "RUC":
                        myObjectRete.infoCompRetencion.tipoIdentificacionSujetoRetenido = "04";
                        break;

                    default:
                        break;
                    }

                    myObjectRete.infoCompRetencion.razonSocialSujetoRetenido    = item.pe_nombreCompleto.Replace('*', ' ').Trim();                // proveedor
                    myObjectRete.infoCompRetencion.identificacionSujetoRetenido = item.emi_Ruc.Trim();                                            // cedula o ruc
                    myObjectRete.infoCompRetencion.periodoFiscal = Convert.ToString(myObjectRete.infoCompRetencion.fechaEmision).Substring(3, 7); // factura


                    // consultar detalle Retencion

                    List <cp_XML_Documento_Retencion_Info> listaDetReten = new List <cp_XML_Documento_Retencion_Info>();

                    listaDetReten = GetList(IdEmpresa, IdDocumento);

                    if (listaDetReten.Count != 0)
                    {
                        foreach (var itemDET in listaDetReten)
                        {
                            Info.class_sri.Retencion.impuesto imp = new Info.class_sri.Retencion.impuesto();

                            if (itemDET.re_tipoRet == "IVA")
                            {
                                imp.codigo = "2";


                                switch (Convert.ToString(itemDET.re_Porcen_retencion))
                                {
                                case "0":
                                    imp.codigoRetencion   = "8";
                                    imp.porcentajeRetener = 0;
                                    break;

                                case "10":
                                    imp.codigoRetencion   = "9";
                                    imp.porcentajeRetener = 10;
                                    break;

                                case "20":
                                    imp.codigoRetencion   = "10";
                                    imp.porcentajeRetener = 20;
                                    break;

                                case "30":
                                    imp.codigoRetencion   = "1";
                                    imp.porcentajeRetener = 30;
                                    break;

                                case "50":
                                    imp.codigoRetencion   = "11";
                                    imp.porcentajeRetener = 50;
                                    break;

                                case "70":
                                    imp.codigoRetencion   = "2";
                                    imp.porcentajeRetener = 70;
                                    break;

                                case "100":
                                    imp.codigoRetencion   = "3";
                                    imp.porcentajeRetener = 100;
                                    break;

                                default:
                                    break;
                                }
                            }

                            if (itemDET.re_tipoRet == "RTF")
                            {
                                imp.codigo            = "1";
                                imp.codigoRetencion   = itemDET.re_Codigo_impuesto;
                                imp.porcentajeRetener = Convert.ToDecimal(itemDET.re_Porcen_retencion);
                            }

                            imp.baseImponible  = Math.Round(Convert.ToDecimal(itemDET.re_baseRetencion), 2);
                            imp.valorRetenido  = Math.Round(Convert.ToDecimal(itemDET.re_valor_retencion), 2);
                            imp.codDocSustento = item.CodDocumento;   //si factura es 01 y

                            // validar secuencial factura
                            secuencia_aux = "";
                            secuencia     = "";

                            if (!String.IsNullOrEmpty(item.NumeroDocumento))
                            {
                                if (item.NumeroDocumento.Length < 9)
                                {
                                    int conta      = item.NumeroDocumento.Length;
                                    int diferencia = 9 - conta;

                                    secuencia_aux = secuencia_aux.PadLeft(diferencia, '0');
                                    secuencia     = secuencia_aux + item.NumeroDocumento;

                                    item.NumeroDocumento = secuencia;
                                }
                            }

                            string[] serieFact = Convert.ToString(item.co_serie).Split('-');

                            imp.numDocSustento          = serieFact[0].Trim() + serieFact[1].Trim() + Convert.ToString(item.NumeroDocumento).Trim();
                            imp.fechaEmisionDocSustento = Convert.ToDateTime(item.FechaEmision).ToString("dd/MM/yyyy");

                            // myObjectRete.infoCompRetencion.fechaEmision = item.co_FechaFactura.ToString(format);
                            myObjectRete.impuestos.Add(imp);


                            if (!String.IsNullOrEmpty(item.pe_correo.Trim()))
                            {
                                string campoAdicional = item.pe_correo.Trim();
                                // campos adicionales
                                Cl_ValidarEmail_Info datosAdc = new Cl_ValidarEmail_Info();

                                if (!String.IsNullOrEmpty(campoAdicional))
                                {
                                    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);
                                    }
                                }
                            }
                        }
                    }

                    lista.Add(myObjectRete);
                }
                return(lista);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Esempio 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>());
            }
        }