protected void EditarRegistro() { int idCliente = (int)gdvDatos.SelectedValue; oCliente = new MedDAL.DAL.clientes(); oCliente = (MedDAL.DAL.clientes)oblCliente.BuscarCliente(idCliente); PoblarDatosGenerales(); PoblarDatosContacto(); PoblarDatosProfesionales(); PoblarDatosOpcionales(); if (oblCliente.EditarRegistro(oCliente)) { oblClientesContactos = new MedNeg.ClientesContactos.BlClientesContactos(); if (oblClientesContactos.EliminarSimultaneos(idCliente) & oblClientesContactos.NuevoRegistro((List <MedDAL.DAL.clientes_contacto>)Session["lstContactosDB"], idCliente)) { NotificarAccion(true, "Se ha editado correctamente el cliente"); } else { NotificarAccion(true, "Se ha editado correctamente el cliente, pero no se actualizaron los contactos"); } RegistrarEvento("Clientes", "Editar cliente", "Se ha editado el cliente " + oCliente.idCliente + ": " + oCliente.Nombre + " " + oCliente.Apellidos + ", Clave: " + oCliente.Clave1 + ", Correo electronico:" + oCliente.CorreoElectronico + ", RFC: " + oCliente.Rfc); ModificarControl(this.tabContainer, false, false); } else { NotificarAccion(false, "No se ha podido editar el cliente"); } }
protected void NuevoRegistro() { oCliente = new MedDAL.DAL.clientes(); PoblarDatosGenerales(); PoblarDatosContacto(); PoblarDatosProfesionales(); PoblarDatosOpcionales(); //if (ValidarCliente()) //{ if (oblCliente.NuevoRegistro(oCliente)) { NotificarAccion(true, "Se ha agregado correctamente el cliente"); ModificarControl(this.tabContainer, true, true); //Session["lstContactosDB"] = new List<MedDAL.DAL.clientes_contacto>(); //gdvContactosCliente.DataBind(); CargarEstados(false); CargarCmbTipos(false); gdvDatos.SelectedIndex = -1; RegistrarEvento("Cliente", "Agregar cliente", "Se ha agregado el Cliente " + oCliente.idCliente + ": " + oCliente.Nombre + " " + oCliente.Apellidos + ", Clave: " + oCliente.Clave1 + ", Correo electronico:" + oCliente.CorreoElectronico + ", RFC: " + oCliente.Rfc + ""); oblClientesContactos = new MedNeg.ClientesContactos.BlClientesContactos(); if (!oblClientesContactos.NuevoRegistro((List <MedDAL.DAL.clientes_contacto>)Session["lstContactosDB"], oCliente.idCliente)) { NotificarAccion(false, "Se ha agregado correctamente el cliente, pero no se pudieron agregar 1 o mas contactos"); } } else { NotificarAccion(false, "No se ha podido agregar el cliente"); } //} //else // NotificarAccion(false, "Ya existe un cliente con esa clave"); }
protected void Editar() { int idCliente = (int)gdvDatos.SelectedValue; ModificarControl(this.tabContainer, true, true); oCliente = new MedDAL.DAL.clientes(); oCliente = (MedDAL.DAL.clientes)oblCliente.BuscarCliente(idCliente); oblClientesContactos = new MedNeg.ClientesContactos.BlClientesContactos(); Session["lstContactosDB"] = oblClientesContactos.BuscarContactos(idCliente);; gdvContactosCliente.DataSource = ((List <MedDAL.DAL.clientes_contacto>)Session["lstContactosDB"]); gdvContactosCliente.DataBind(); LlenarDatosGenerales(); LlenarDatosContacto(); LlenarDatosProfesionales(); LlenarDatosOpcionales(); }
protected void Eliminar(int idCliente) { oCliente = new MedDAL.DAL.clientes(); oCliente = (MedDAL.DAL.clientes)oblCliente.BuscarCliente(idCliente); oblClientesContactos = new MedNeg.ClientesContactos.BlClientesContactos(); if (oblClientesContactos.EliminarSimultaneos(idCliente)) { if (oblCliente.EliminarRegistro(oCliente.idCliente)) { gdvDatos.SelectedIndex = -1; NotificarAccion(true, "Se ha eliminado correctamente el vendedor"); RegistrarEvento("Clientes", "Eliminar cliente", "Se ha elminado el cliente " + oCliente.idCliente + ": " + oCliente.Nombre + " " + oCliente.Apellidos + ", Clave: " + oCliente.Clave1 + ", Correo electronico:" + oCliente.CorreoElectronico + ", RFC: " + oCliente.Rfc); } else { NotificarAccion(false, "No se ha podido eliminar al cliente"); } } else { NotificarAccion(false, "No se ha podido eliminar al cliente porque aun tiene contactos asociados"); } }
/// <summary> /// Generacion de factura electronica /// </summary> /// <param name="iIdFactura"></param> /// <param name="sRutaArchivos"></param> /// <param name="sUsuario"></param> /// <param name="iIdCliente"></param> /// <param name="?"></param> /// <param name="sFolioFactura"></param> public int GenerarFacturaElectronica(int iIdFactura, string sRutaArchivos, string sUsuario,int iIdCliente,string sFolioFactura) { int iResultado = 0; //Datos de la factura MedNeg.Facturas.BlFacturas oblFactura = new BlFacturas(); MedDAL.DAL.facturas oFactura = new MedDAL.DAL.facturas(); //Datos de la factura oFactura = oblFactura.BuscarFactura(iIdFactura); //Recuperar la partida de la factura List<MedDAL.DAL.facturas_partida> oQuery = new List<MedDAL.DAL.facturas_partida>(); oQuery.AddRange(oblFactura.RecuperarPartidaFactura(oFactura.idFactura)); decimal dSubtotal = 0; decimal dImpuestosTrasladados = 0; decimal dTotal = 0; //Recorrer el resultado de la partida para obtener el total foreach (MedDAL.DAL.facturas_partida oDetalle in oQuery) { dSubtotal += oDetalle.Cantidad * oDetalle.Precio; dImpuestosTrasladados += (decimal)oDetalle.Iva + (decimal)oDetalle.IEPS; } //Total dTotal = dSubtotal + dImpuestosTrasladados; DateTime dtFechaTest = DateTime.Now; string sNumeroCertificado = ""; string sA, sB, sC; //Leer archivo de configuracion MedNeg.Configuracion.BlConfiguracion oblConfiguracion = new MedNeg.Configuracion.BlConfiguracion(); MedDAL.Configuracion.DALConfiguracion odalConfiguracion = new MedDAL.Configuracion.DALConfiguracion(); odalConfiguracion = (MedDAL.Configuracion.DALConfiguracion)oblConfiguracion.CargaDatos(sRutaArchivos+"/Configuracion.xml"); //Comprobante.SelloDigital.leerCER(sRutaArchivos + "/Certificados/aaa010101aaa_csd_06.cer", out sA, out sB, out sC, out sNumeroCertificado); Comprobante.SelloDigital.leerCER(sRutaArchivos + "/Facturacion/"+odalConfiguracion.sRutaCertificado, out sA, out sB, out sC, out sNumeroCertificado); //Establecer el numero de cuenta string sNumeroCuenta = null; if (oFactura.metodo_pago.MetodoPago.Equals("depósito en cuenta", StringComparison.InvariantCultureIgnoreCase) || oFactura.metodo_pago.MetodoPago.Equals("traspaso", StringComparison.InvariantCultureIgnoreCase)) { sNumeroCuenta = oFactura.NumeroCuentaPago; } //Debo validar la vigencia del certificado con sa <= FechaEmision <= sB #region generarcomprobante //Construir objeto factura Comprobante.ComprobanteFiscalDigital oComprobanteFiscalDigital = new Comprobante.ComprobanteFiscalDigital( "", //Serie sFolioFactura, //Folio dtFechaTest.ToString("yyyy-MM-ddThh:mm:ss"), //Fecha oFactura.tipo_forma_pago.FormaPago, //FormaDePago sNumeroCertificado, //NoCertificado "",//"Condiciones de pago", dSubtotal.ToString(), //SubTotal "0",//Descuento "",//Motivo del descuento dTotal.ToString(), //Total oFactura.metodo_pago.MetodoPago, //Metodo de pago "Ingreso", //Tipo de comprobante null, //noAprobacion null, //anoAprobacion "3.2", //version null,//TipoCambio null, //Moneda odalConfiguracion.sEstado + "," + odalConfiguracion.sMunicipio, //LugarExpedicion sNumeroCuenta //NumCtaPago ); //Pendiente la parte de pagos parciales //Empresa o razon social y direccion fiscal Comprobante.t_Emisor Emisor = new Comprobante.t_Emisor( odalConfiguracion.sRfc, odalConfiguracion.sRazonSocial, odalConfiguracion.sDomicilio, //Calle "", //No exterior "", //No interior "", //Colonia "", //Localidad "",//Emisor Referencia odalConfiguracion.sMunicipio, odalConfiguracion.sEstado, odalConfiguracion.sPais, odalConfiguracion.sCodigoPostal ); Emisor.addRegimenFiscal(odalConfiguracion.sRegimenFiscal); oComprobanteFiscalDigital.setEmisor(Emisor); //Establece la expedición de la factura, se toman lo datos del almacen MedDAL.DAL.usuarios oUsuario = new MedDAL.DAL.usuarios(); MedNeg.Usuarios.BlUsuarios oblUsuario = new Usuarios.BlUsuarios(); oUsuario = (MedDAL.DAL.usuarios)oblUsuario.Buscar(sUsuario); oComprobanteFiscalDigital.setExpedicion( oUsuario.almacenes.Calle.ToString(),//Calle oUsuario.almacenes.NumeroExt.ToString(),//NoExt "", //NoInt oUsuario.almacenes.colonias.Nombre, //Colonia oUsuario.almacenes.poblaciones.Nombre.ToString(), //Población "",//Emisor Referencia Expedicion oUsuario.almacenes.municipios.Nombre.ToString(),//Municipio oUsuario.almacenes.estados.Nombre.ToString(),//Estado oUsuario.almacenes.Pais.ToString(),//Pais oUsuario.almacenes.CodigoPostal.ToString());//CP //Establecer los datos del cliente MedDAL.DAL.clientes oCliente = new MedDAL.DAL.clientes(); MedNeg.BlClientes.BlClientes oblClientes = new BlClientes.BlClientes(); oCliente = oblClientes.BuscarCliente(iIdCliente); oComprobanteFiscalDigital.setReceptor( oCliente.Rfc.ToString(), //RFC oCliente.Nombre.ToString() + " " + oCliente.Apellidos.ToString(), //Nombre oCliente.Calle.ToString(), //Calle oCliente.NumeroExt.ToString(), //No ext oCliente.NumeroInt.ToString(),//No int oCliente.colonias.Nombre.ToString(),//Colo oCliente.poblaciones.Nombre.ToString(),//Ciudad "",//ReferenciaReceptor oCliente.municipios.Nombre.ToString(),//Municipio oCliente.estados.Nombre.ToString(),//Estado "Mexico",//Pais oCliente.CodigoPostal.ToString() //Codigo postal ); //Recorrer el resultado de la partida para obtener el total foreach (MedDAL.DAL.facturas_partida oDetalle in oQuery) { string Cantidad, Codigo, Descripcion, Unidad, PrecioUnitario, Importe, ImporteNeto; decimal dImporte=0; Cantidad = oDetalle.Cantidad.ToString(); //Codigo = oDetalle.productos.Clave1.ToString(); //Descripcion = oDetalle.productos.Nombre.ToString(); //0087 Identificar si es un producto o un ensamble if (oDetalle.idEnsamble.Equals(null)) { //Datos del producto Codigo = oDetalle.productos.Clave1.ToString(); } else { //Datos del ensamble Codigo = oDetalle.ensamble.ClaveBom.ToString(); } Descripcion = oDetalle.Descripcion.ToString(); Unidad = oDetalle.productos.UnidadMedida; PrecioUnitario = oDetalle.Precio.ToString(); dImporte=oDetalle.Cantidad * oDetalle.Precio; Importe = dImporte.ToString(); Comprobante.Concepto C = new Comprobante.Concepto( Cantidad, Unidad, Codigo, Descripcion, PrecioUnitario, Importe); oComprobanteFiscalDigital.addConcepto(C);//aqui agregas el elemento a la partida } #endregion //Commpruebo que sea válido if (oComprobanteFiscalDigital.Valido() == true) { string sCadenaOriginal = oComprobanteFiscalDigital.CadenaOriginal(); oComprobanteFiscalDigital.Sellar(sRutaArchivos + "/Facturacion/" + odalConfiguracion.sRutaLlave.ToString(), sRutaArchivos + "/Facturacion/" + odalConfiguracion.sRutaCertificado.ToString(), odalConfiguracion.sContraseña.ToString()); oComprobanteFiscalDigital.XML().Save(sRutaArchivos + "/FacturasElectronicas/FacturaE-" + sFolioFactura + ".xml"); //return a.XML(); /* * Modificaciones de POJO: 1 de Noviembre 2011 : Agregando el webservice para timbrado, guardaré los archivos en /Facturacion/Timbrados/ */ FacturaService.TimbradoClient svcT = new FacturaService.TimbradoClient(); FacturaService.RespuestaCFDi RespuestaCFDi = new FacturaService.RespuestaCFDi(); //Aquí, cambiar la funcion a svcT.Timbrar cuando vayan a mostrarlo en producción, de otra manera, no serán válidos los cfdi's que emitan. try { byte [] aArchivo = File.ReadAllBytes(sRutaArchivos + "/FacturasElectronicas/FacturaE-" + sFolioFactura + ".xml"); RespuestaCFDi = svcT.Timbrar("pojo", "a", aArchivo); File.WriteAllBytes(sRutaArchivos + "/FacturasElectronicasTimbradas/FacturaE-" + sFolioFactura + ".xml", RespuestaCFDi.Documento); RespuestaCFDi = svcT.PDF("pojo", "a", File.ReadAllBytes(sRutaArchivos + "/FacturasElectronicasTimbradas/FacturaE-" + sFolioFactura + ".xml"), null); File.WriteAllBytes(sRutaArchivos + "/FacturasElectronicasTimbradas/FacturaE-" + sFolioFactura + ".pdf", RespuestaCFDi.Documento); return 0; } catch (System.Net.WebException ex) { //Sale cuando no encuentra al server return 1; } catch (System.Web.Services.Protocols.SoapHeaderException ex) { return 3; } catch (Exception ex) { //Para excepciones no conocidas return 4; } /* * Falta: Revisar errores con PAC (¿Cómo los regresas? ¿Qué pasa si algo está mal? ¿el xml fue correctamente construido?¿Una función nueva?) */ } else { //Sale cuando el certificado no es valido return 2; } }
protected void Editar() { int idCliente = (int)gdvDatos.SelectedValue; ModificarControl(this.tabContainer, true, true); oCliente = new MedDAL.DAL.clientes(); oCliente = (MedDAL.DAL.clientes)oblCliente.BuscarCliente(idCliente); oblClientesContactos = new MedNeg.ClientesContactos.BlClientesContactos(); Session["lstContactosDB"] = oblClientesContactos.BuscarContactos(idCliente); ; gdvContactosCliente.DataSource = ((List<MedDAL.DAL.clientes_contacto>)Session["lstContactosDB"]); gdvContactosCliente.DataBind(); LlenarDatosGenerales(); LlenarDatosContacto(); LlenarDatosProfesionales(); LlenarDatosOpcionales(); }
protected void EditarRegistro() { int idCliente = (int)gdvDatos.SelectedValue; oCliente = new MedDAL.DAL.clientes(); oCliente = (MedDAL.DAL.clientes)oblCliente.BuscarCliente(idCliente); PoblarDatosGenerales(); PoblarDatosContacto(); PoblarDatosProfesionales(); PoblarDatosOpcionales(); if (oblCliente.EditarRegistro(oCliente)) { oblClientesContactos = new MedNeg.ClientesContactos.BlClientesContactos(); if (oblClientesContactos.EliminarSimultaneos(idCliente)&oblClientesContactos.NuevoRegistro((List<MedDAL.DAL.clientes_contacto>)Session["lstContactosDB"],idCliente)) NotificarAccion(true, "Se ha editado correctamente el cliente"); else NotificarAccion(true, "Se ha editado correctamente el cliente, pero no se actualizaron los contactos"); RegistrarEvento("Clientes", "Editar cliente", "Se ha editado el cliente " + oCliente.idCliente + ": " + oCliente.Nombre + " " + oCliente.Apellidos + ", Clave: " + oCliente.Clave1 + ", Correo electronico:" + oCliente.CorreoElectronico + ", RFC: " + oCliente.Rfc); ModificarControl(this.tabContainer, false, false); } else NotificarAccion(false, "No se ha podido editar el cliente"); }
protected void Eliminar(int idCliente) { oCliente = new MedDAL.DAL.clientes(); oCliente = (MedDAL.DAL.clientes)oblCliente.BuscarCliente(idCliente); oblClientesContactos = new MedNeg.ClientesContactos.BlClientesContactos(); if (oblClientesContactos.EliminarSimultaneos(idCliente)) { if (oblCliente.EliminarRegistro(oCliente.idCliente)) { gdvDatos.SelectedIndex = -1; NotificarAccion(true, "Se ha eliminado correctamente el vendedor"); RegistrarEvento("Clientes", "Eliminar cliente", "Se ha elminado el cliente " + oCliente.idCliente + ": " + oCliente.Nombre + " " + oCliente.Apellidos + ", Clave: " + oCliente.Clave1 + ", Correo electronico:" + oCliente.CorreoElectronico + ", RFC: " + oCliente.Rfc); } else NotificarAccion(false, "No se ha podido eliminar al cliente"); } else NotificarAccion(false, "No se ha podido eliminar al cliente porque aun tiene contactos asociados"); }
protected void NuevoRegistro() { oCliente = new MedDAL.DAL.clientes(); PoblarDatosGenerales(); PoblarDatosContacto(); PoblarDatosProfesionales(); PoblarDatosOpcionales(); //if (ValidarCliente()) //{ if (oblCliente.NuevoRegistro(oCliente)) { NotificarAccion(true, "Se ha agregado correctamente el cliente"); ModificarControl(this.tabContainer, true, true); //Session["lstContactosDB"] = new List<MedDAL.DAL.clientes_contacto>(); //gdvContactosCliente.DataBind(); CargarEstados(false); CargarCmbTipos(false); gdvDatos.SelectedIndex = -1; RegistrarEvento("Cliente", "Agregar cliente", "Se ha agregado el Cliente " + oCliente.idCliente + ": " + oCliente.Nombre + " " + oCliente.Apellidos + ", Clave: " + oCliente.Clave1 + ", Correo electronico:" + oCliente.CorreoElectronico + ", RFC: " + oCliente.Rfc + ""); oblClientesContactos = new MedNeg.ClientesContactos.BlClientesContactos(); if (!oblClientesContactos.NuevoRegistro((List<MedDAL.DAL.clientes_contacto>)Session["lstContactosDB"], oCliente.idCliente)) NotificarAccion(false, "Se ha agregado correctamente el cliente, pero no se pudieron agregar 1 o mas contactos"); } else NotificarAccion(false, "No se ha podido agregar el cliente"); //} //else // NotificarAccion(false, "Ya existe un cliente con esa clave"); }
/// <summary> ///Cargar los datos del cliente /// </summary> /// <param name="sNombre"></param> private void CargaDatosCliente(string sNombre) { MedDAL.DAL.clientes oCliente = new MedDAL.DAL.clientes(); MedNeg.BlClientes.BlClientes oblCliente = new MedNeg.BlClientes.BlClientes(); oCliente = oblCliente.BuscarPorClave(sNombre.Substring(0, sNombre.IndexOf(" "))); try { txbCliente.Text = oCliente.Nombre + " " + oCliente.Apellidos; txbDireccion.Text = oCliente.Calle.ToString() + " " + oCliente.NumeroExt.ToString(); if (oCliente.NumeroInt != null) { txbDireccion.Text += " Int: " + oCliente.NumeroInt.ToString(); } txbPoblacion.Text = oCliente.poblaciones.Nombre.ToString() + ", " + oCliente.municipios.Nombre.ToString() + ", " + oCliente.estados.Nombre.ToString(); Session["sIdCliente"] = oCliente.idCliente; } catch { txbCliente.Focus(); } }
/// <summary> /// BL - Registrar un cliente nuevo /// </summary> /// <param name="ocliente">cliente a registrar</param> /// <returns></returns> public bool NuevoRegistro(MedDAL.DAL.clientes oCliente) { return(odalClientes.NuevoRegistro(oCliente)); }
/// <summary> /// BL - Editar un cliente /// </summary> /// <param name="ocliente">cliente a editar</param> /// <returns></returns> public bool EditarRegistro(MedDAL.DAL.clientes oCliente) { return(odalClientes.EditarRegistro(oCliente)); }
/// <summary> /// Generacion de factura electronica /// </summary> /// <param name="iIdFactura"></param> /// <param name="sRutaArchivos"></param> /// <param name="sUsuario"></param> /// <param name="iIdCliente"></param> /// <param name="?"></param> /// <param name="sFolioFactura"></param> public int GenerarFacturaElectronica(int iIdFactura, string sRutaArchivos, string sUsuario, int iIdCliente, string sFolioFactura) { int iResultado = 0; //Datos de la factura MedNeg.Facturas.BlFacturas oblFactura = new BlFacturas(); MedDAL.DAL.facturas oFactura = new MedDAL.DAL.facturas(); //Datos de la factura oFactura = oblFactura.BuscarFactura(iIdFactura); //Recuperar la partida de la factura List <MedDAL.DAL.facturas_partida> oQuery = new List <MedDAL.DAL.facturas_partida>(); oQuery.AddRange(oblFactura.RecuperarPartidaFactura(oFactura.idFactura)); decimal dSubtotal = 0; decimal dImpuestosTrasladados = 0; decimal dTotal = 0; //Recorrer el resultado de la partida para obtener el total foreach (MedDAL.DAL.facturas_partida oDetalle in oQuery) { dSubtotal += oDetalle.Cantidad * oDetalle.Precio; dImpuestosTrasladados += (decimal)oDetalle.Iva + (decimal)oDetalle.IEPS; } //Total dTotal = dSubtotal + dImpuestosTrasladados; DateTime dtFechaTest = DateTime.Now; string sNumeroCertificado = ""; string sA, sB, sC; //Leer archivo de configuracion MedNeg.Configuracion.BlConfiguracion oblConfiguracion = new MedNeg.Configuracion.BlConfiguracion(); MedDAL.Configuracion.DALConfiguracion odalConfiguracion = new MedDAL.Configuracion.DALConfiguracion(); odalConfiguracion = (MedDAL.Configuracion.DALConfiguracion)oblConfiguracion.CargaDatos(sRutaArchivos + "/Configuracion.xml"); //Comprobante.SelloDigital.leerCER(sRutaArchivos + "/Certificados/aaa010101aaa_csd_06.cer", out sA, out sB, out sC, out sNumeroCertificado); Comprobante.SelloDigital.leerCER(sRutaArchivos + "/Facturacion/" + odalConfiguracion.sRutaCertificado, out sA, out sB, out sC, out sNumeroCertificado); //Establecer el numero de cuenta string sNumeroCuenta = null; if (oFactura.metodo_pago.MetodoPago.Equals("depósito en cuenta", StringComparison.InvariantCultureIgnoreCase) || oFactura.metodo_pago.MetodoPago.Equals("traspaso", StringComparison.InvariantCultureIgnoreCase)) { sNumeroCuenta = oFactura.NumeroCuentaPago; } //Debo validar la vigencia del certificado con sa <= FechaEmision <= sB #region generarcomprobante //Construir objeto factura Comprobante.ComprobanteFiscalDigital oComprobanteFiscalDigital = new Comprobante.ComprobanteFiscalDigital( "", //Serie sFolioFactura, //Folio dtFechaTest.ToString("yyyy-MM-ddThh:mm:ss"), //Fecha oFactura.tipo_forma_pago.FormaPago, //FormaDePago sNumeroCertificado, //NoCertificado "", //"Condiciones de pago", dSubtotal.ToString(), //SubTotal "0", //Descuento "", //Motivo del descuento dTotal.ToString(), //Total oFactura.metodo_pago.MetodoPago, //Metodo de pago "Ingreso", //Tipo de comprobante null, //noAprobacion null, //anoAprobacion "3.2", //version null, //TipoCambio null, //Moneda odalConfiguracion.sEstado + "," + odalConfiguracion.sMunicipio, //LugarExpedicion sNumeroCuenta //NumCtaPago ); //Pendiente la parte de pagos parciales //Empresa o razon social y direccion fiscal Comprobante.t_Emisor Emisor = new Comprobante.t_Emisor( odalConfiguracion.sRfc, odalConfiguracion.sRazonSocial, odalConfiguracion.sDomicilio, //Calle "", //No exterior "", //No interior "", //Colonia "", //Localidad "", //Emisor Referencia odalConfiguracion.sMunicipio, odalConfiguracion.sEstado, odalConfiguracion.sPais, odalConfiguracion.sCodigoPostal ); Emisor.addRegimenFiscal(odalConfiguracion.sRegimenFiscal); oComprobanteFiscalDigital.setEmisor(Emisor); //Establece la expedición de la factura, se toman lo datos del almacen MedDAL.DAL.usuarios oUsuario = new MedDAL.DAL.usuarios(); MedNeg.Usuarios.BlUsuarios oblUsuario = new Usuarios.BlUsuarios(); oUsuario = (MedDAL.DAL.usuarios)oblUsuario.Buscar(sUsuario); oComprobanteFiscalDigital.setExpedicion( oUsuario.almacenes.Calle.ToString(), //Calle oUsuario.almacenes.NumeroExt.ToString(), //NoExt "", //NoInt oUsuario.almacenes.colonias.Nombre, //Colonia oUsuario.almacenes.poblaciones.Nombre.ToString(), //Población "", //Emisor Referencia Expedicion oUsuario.almacenes.municipios.Nombre.ToString(), //Municipio oUsuario.almacenes.estados.Nombre.ToString(), //Estado oUsuario.almacenes.Pais.ToString(), //Pais oUsuario.almacenes.CodigoPostal.ToString()); //CP //Establecer los datos del cliente MedDAL.DAL.clientes oCliente = new MedDAL.DAL.clientes(); MedNeg.BlClientes.BlClientes oblClientes = new BlClientes.BlClientes(); oCliente = oblClientes.BuscarCliente(iIdCliente); oComprobanteFiscalDigital.setReceptor( oCliente.Rfc.ToString(), //RFC oCliente.Nombre.ToString() + " " + oCliente.Apellidos.ToString(), //Nombre oCliente.Calle.ToString(), //Calle oCliente.NumeroExt.ToString(), //No ext oCliente.NumeroInt.ToString(), //No int oCliente.colonias.Nombre.ToString(), //Colo oCliente.poblaciones.Nombre.ToString(), //Ciudad "", //ReferenciaReceptor oCliente.municipios.Nombre.ToString(), //Municipio oCliente.estados.Nombre.ToString(), //Estado "Mexico", //Pais oCliente.CodigoPostal.ToString() //Codigo postal ); //Recorrer el resultado de la partida para obtener el total foreach (MedDAL.DAL.facturas_partida oDetalle in oQuery) { string Cantidad, Codigo, Descripcion, Unidad, PrecioUnitario, Importe, ImporteNeto; decimal dImporte = 0; Cantidad = oDetalle.Cantidad.ToString(); //Codigo = oDetalle.productos.Clave1.ToString(); //Descripcion = oDetalle.productos.Nombre.ToString(); //0087 Identificar si es un producto o un ensamble if (oDetalle.idEnsamble.Equals(null)) { //Datos del producto Codigo = oDetalle.productos.Clave1.ToString(); } else { //Datos del ensamble Codigo = oDetalle.ensamble.ClaveBom.ToString(); } Descripcion = oDetalle.Descripcion.ToString(); Unidad = oDetalle.productos.UnidadMedida; PrecioUnitario = oDetalle.Precio.ToString(); dImporte = oDetalle.Cantidad * oDetalle.Precio; Importe = dImporte.ToString(); Comprobante.Concepto C = new Comprobante.Concepto( Cantidad, Unidad, Codigo, Descripcion, PrecioUnitario, Importe); oComprobanteFiscalDigital.addConcepto(C);//aqui agregas el elemento a la partida } #endregion //Commpruebo que sea válido if (oComprobanteFiscalDigital.Valido() == true) { string sCadenaOriginal = oComprobanteFiscalDigital.CadenaOriginal(); oComprobanteFiscalDigital.Sellar(sRutaArchivos + "/Facturacion/" + odalConfiguracion.sRutaLlave.ToString(), sRutaArchivos + "/Facturacion/" + odalConfiguracion.sRutaCertificado.ToString(), odalConfiguracion.sContraseña.ToString()); oComprobanteFiscalDigital.XML().Save(sRutaArchivos + "/FacturasElectronicas/FacturaE-" + sFolioFactura + ".xml"); //return a.XML(); /* * Modificaciones de POJO: 1 de Noviembre 2011 : Agregando el webservice para timbrado, guardaré los archivos en /Facturacion/Timbrados/ */ FacturaService.TimbradoClient svcT = new FacturaService.TimbradoClient(); FacturaService.RespuestaCFDi RespuestaCFDi = new FacturaService.RespuestaCFDi(); //Aquí, cambiar la funcion a svcT.Timbrar cuando vayan a mostrarlo en producción, de otra manera, no serán válidos los cfdi's que emitan. try { byte [] aArchivo = File.ReadAllBytes(sRutaArchivos + "/FacturasElectronicas/FacturaE-" + sFolioFactura + ".xml"); RespuestaCFDi = svcT.Timbrar("pojo", "a", aArchivo); File.WriteAllBytes(sRutaArchivos + "/FacturasElectronicasTimbradas/FacturaE-" + sFolioFactura + ".xml", RespuestaCFDi.Documento); RespuestaCFDi = svcT.PDF("pojo", "a", File.ReadAllBytes(sRutaArchivos + "/FacturasElectronicasTimbradas/FacturaE-" + sFolioFactura + ".xml"), null); File.WriteAllBytes(sRutaArchivos + "/FacturasElectronicasTimbradas/FacturaE-" + sFolioFactura + ".pdf", RespuestaCFDi.Documento); return(0); } catch (System.Net.WebException ex) { //Sale cuando no encuentra al server return(1); } catch (System.Web.Services.Protocols.SoapHeaderException ex) { return(3); } catch (Exception ex) { //Para excepciones no conocidas return(4); } /* * Falta: Revisar errores con PAC (¿Cómo los regresas? ¿Qué pasa si algo está mal? ¿el xml fue correctamente construido?¿Una función nueva?) */ } else { //Sale cuando el certificado no es valido return(2); } }