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>()); } }
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>()); } }