/// <summary> /// funcion que crea una factura nueva sin gastos de administracion /// </summary> /// <param name="sFolio"></param> /// <param name="iTipo">1-Tradicional, 2-Electronica</param> /// <returns></returns> private void CrearFactura(List<MedNeg.Facturas.BlDetalleFacturaReceta> lstDetalleFactura, int iTipo) { //TODO: GT Paso 3: Generar la factura con todo lo contabilizado de las recetas que van a conformar esta factura. //objeto que contiene la receta string sRutaArchivoConfig = Server.MapPath("~/Archivos/Configuracion.xml"); string sRutaCertificados = Server.MapPath("~/Archivos/"); string sFacturaAdicional = ""; string sFacturaAdicional2 = ""; MedDAL.DAL.recetas oReceta = new MedDAL.DAL.recetas(); MedNeg.Recetas.BlRecetas oblReceta = new MedNeg.Recetas.BlRecetas(); MedNeg.Configuracion.BlConfiguracion oblConfiguracion = new MedNeg.Configuracion.BlConfiguracion(); MedDAL.Configuracion.DALConfiguracion odalConfiguracion = new MedDAL.Configuracion.DALConfiguracion(); MedDAL.DAL.facturas oFacturas = new MedDAL.DAL.facturas(); MedNeg.Facturas.BlFacturas oblFacturas = new MedNeg.Facturas.BlFacturas(); MedDAL.DAL.FacturacionDeRecetas oFacturacionRecetas = new MedDAL.DAL.FacturacionDeRecetas(); decimal dSubtotal = 0; int idReceta = 0; odalConfiguracion = (MedDAL.Configuracion.DALConfiguracion)oblConfiguracion.CargaDatos(sRutaArchivoConfig); //ID Cliente oFacturas.idCliente = (int)Session["sIdCliente"]; //IDRECETA //oFacturas.idReceta = oReceta.idReceta; //Asiganr el folio de la factura if (odalConfiguracion.iFacturasAutomatico == 1) { oFacturas.Folio = odalConfiguracion.iFolioFacturas++.ToString(); } else { string sFolioAux; sFolioAux = "FxR" + DateTime.Now.ToShortDateString() + iContadorFacturas.ToString(); //Validar que no exista el folio while (!ValidaFolioRepetido(sFolioAux)) sFolioAux = "FxR" + DateTime.Now.ToShortDateString() + iContadorFacturas++.ToString(); oFacturas.Folio = sFolioAux; } string sIdFolioFactura=oFacturas.Folio; //Fecha oFacturas.Fecha = DateTime.Now; oFacturas.FechaAplicacion = DateTime.Now; //tipo (4 por que son de receta) oFacturas.TipoFactura = "4"; //Estatus (3 de emitida) oFacturas.Estatus = "3"; //Id del usuario que genero la factura oFacturas.idUsuario = Convert.ToInt32(Session["usuarioid"]); //Nombre del vendedor que en este caso es el usuario oFacturas.Vendedor = Session["nombre"].ToString(); //Registrar la factura if (oblFacturas.NuevoRegistro(oFacturas)) { oFacturas = new MedDAL.DAL.facturas(); oblFacturas = new MedNeg.Facturas.BlFacturas(); ////Recuperar el id de la factura crea| da oFacturas = oblFacturas.BuscarFacturasFolio(sIdFolioFactura); //Actualizar el consecutivo en la configuracion oblFacturas.ActualizarFolioFactura(sRutaArchivoConfig); iContadorFacturas++; //Insertar el detalle de factura //Recorrer el objeto de sesion lstDetallePartida que contiene los datos de la partida foreach (MedNeg.Facturas.BlDetalleFacturaReceta renglon in lstDetalleFactura) { oblFacturas = new MedNeg.Facturas.BlFacturas(); MedDAL.DAL.facturas_partida oFacturaPartida = new MedDAL.DAL.facturas_partida(); oFacturaPartida.idFactura = oFacturas.idFactura; oFacturaPartida.idProducto = renglon.iIdProducto; oFacturaPartida.Cantidad = renglon.dCantidad; oFacturaPartida.IEPS = renglon.dIeps; oFacturaPartida.Iva = renglon.dIva; oFacturaPartida.Precio = renglon.dPrecio; //Registrar el detalle del pedido if (!oblFacturas.NuevoDetallePartida(oFacturaPartida)) { //bRegistroFallido = true; } else { //Guardar el monto de las lineas MedNeg.Facturas.BlFacturacionDeLineas oblFacturacionLinea = new MedNeg.Facturas.BlFacturacionDeLineas(); oblFacturacionLinea.DMonto = oFacturaPartida.Cantidad * oFacturaPartida.Precio; oblFacturacionLinea.DtFecha = DateTime.Now; oblFacturacionLinea.IIdLineaCredito = renglon.IIdLineaCredito; lstTotalFacturadoPorLinea.Add(oblFacturacionLinea); //Guardar el subtotal para cuando sea una facturacion de Gtos. Admon por subtotales dSubtotal += oFacturaPartida.Cantidad * oFacturaPartida.Precio; //Modificar el estatus de la receta if (idReceta != renglon.IIdReceta) { MedDAL.DAL.recetas oRecetaEditar = new MedDAL.DAL.recetas(); MedNeg.Recetas.BlRecetas oblRecetas = new MedNeg.Recetas.BlRecetas(); oRecetaEditar.idReceta = renglon.IIdReceta; oRecetaEditar.Estatus = "2"; oblRecetas = new MedNeg.Recetas.BlRecetas(); oblRecetas.EditarRegistro(oRecetaEditar); idReceta = renglon.IIdReceta; } //TODO: Paso 3.1 Aqui generar la factura electronica de las recetas facturadas } } if (iTipo == 2) { oblFacturas = new MedNeg.Facturas.BlFacturas(); oblFacturas.GenerarFacturaElectronica(oFacturas.idFactura, sRutaCertificados, Session["usuario"].ToString(), (int)Session["sIdCliente"], oFacturas.Folio); } ///TODO /// Mandar a imprimir la de gastos de administración por renglones o por subtotales /// 1 = Renglones, 2 = Sub totales /// //TODO: GT Paso 4: una vez generada una factura y segun como eligio el usuario se debe de hacer una factura de tipo Gasto administrativo o por sub totales A LA PAR DE LA FACTURA EMITIDA, es regla de negocio por eso por cada factura siempre existiran 2 if (chkPanelGtosAdmon.Checked == true) { if (rblGenerarFacturaTipo.SelectedValue == "1") { sFacturaAdicional = CrearFacturaGtoAdministrativo(sIdFolioFactura, lstDetalleFactura); sFacturaAdicional2 = sFacturaAdicional.Replace(".xml", ".pdf"); } if (rblGenerarFacturaTipo.SelectedValue == "2") { //Generar la factura agregandole el monto a la factura sFacturaAdicional = CrearFacturaSubTotales(sIdFolioFactura, dSubtotal); sFacturaAdicional2 = sFacturaAdicional.Replace(".xml", ".pdf"); dSubtotal = 0; } } //Gurdar en la base de datos lo facturado por linea de credito foreach (MedNeg.Facturas.BlFacturacionDeLineas registro in lstTotalFacturadoPorLinea) { oFacturacionRecetas.idLineaCredito = registro.IIdLineaCredito; oFacturacionRecetas.Fecha = registro.DtFecha; oFacturacionRecetas.Monto = registro.dMonto; oblFacturas = new MedNeg.Facturas.BlFacturas(); //MedDAL.DAL.facturas_partida oFacturaPartida = new MedDAL.DAL.facturas_partida(); //Registrar el renglon de lo facturado if(!oblFacturas.NuevoRegistroFacturacionReceta(oFacturacionRecetas)) { //bRegistroFallido = true; } } if (iTipo == 2) { try { oblFacturas.CrearZip(new string[] { Server.MapPath("~/Archivos/FacturasElectronicasTimbradas"), Server.MapPath("~/Archivos/FacturasElectronicasTimbradas/FacturaE-" + oFacturas.Folio + ".zip") }, Server.MapPath("~/Archivos/FacturasElectronicasTimbradas/FacturaE-" + oFacturas.Folio + ".xml"), Server.MapPath("~/Archivos/FacturasElectronicasTimbradas/FacturaE-" + oFacturas.Folio + ".pdf"), sFacturaAdicional, sFacturaAdicional2); ScriptManager.RegisterStartupScript(pnlFormulario, pnlFormulario.GetType(), "alertstock", "alertarFacturas(0);", true); System.IO.FileInfo fFactura = new System.IO.FileInfo(Server.MapPath("~/Archivos/FacturasElectronicasTimbradas/FacturaE-" + oFacturas.Folio + ".zip")); Response.Clear(); Response.AddHeader("Content-Disposition", "attachment; filename=" + fFactura.Name); Response.AddHeader("Content-Length", fFactura.Length.ToString()); Response.ContentType = "application/...."; Response.WriteFile(fFactura.FullName); Response.End(); } catch (Exception) { ScriptManager.RegisterStartupScript(pnlFormulario, pnlFormulario.GetType(), "alertstock", "alertarExcepcion(0);", true); } } } }
/// <summary> /// Factura que crea una receta con gastos de administracion /// </summary> /// <param name="sFolio"></param> /// <param name="lstDetalleFactura"></param> private string CrearFacturaGtoAdministrativo(string sFolio,List<MedNeg.Facturas.BlDetalleFacturaReceta> lstDetalleFactura) { //TODO: GT Paso 5: Paso opcional, aqui se genera la factura por gastos administrativos si lo eligio el usuario //objeto que contiene la receta string sRutaArchivoConfig = Server.MapPath("~/Archivos/Configuracion.xml"); string sRutaCertificados = Server.MapPath("~/Archivos/"); bool bRegistroFallido = false; //MedDAL.DAL.recetas oReceta = new MedDAL.DAL.recetas(); //MedNeg.Recetas.BlRecetas oblReceta = new MedNeg.Recetas.BlRecetas(); MedNeg.Configuracion.BlConfiguracion oblConfiguracion = new MedNeg.Configuracion.BlConfiguracion(); MedDAL.Configuracion.DALConfiguracion odalConfiguracion = new MedDAL.Configuracion.DALConfiguracion(); MedDAL.DAL.facturas oFacturas = new MedDAL.DAL.facturas(); MedNeg.Facturas.BlFacturas oblFacturas = new MedNeg.Facturas.BlFacturas(); //decimal dSubtotal = 0; //int idReceta = 0; odalConfiguracion = (MedDAL.Configuracion.DALConfiguracion)oblConfiguracion.CargaDatos(sRutaArchivoConfig); //ID Cliente oFacturas.idCliente = (int)Session["sIdCliente"]; //IDRECETA //oFacturas.idReceta = oReceta.idReceta; //Asiganr el folio de la factura if (odalConfiguracion.iFacturasAutomatico == 1) { oFacturas.Folio = odalConfiguracion.iFolioFacturas++.ToString(); } else { //oFacturas.Folio = oReceta.Folio; oFacturas.Folio = sFolio + "-GastoAdm"; } string sIdFolioFactura = oFacturas.Folio; //Fecha oFacturas.Fecha = DateTime.Now; oFacturas.FechaAplicacion = DateTime.Now; //tipo (4 por que son de receta) oFacturas.TipoFactura = "4"; //Estatus (3 de emitida) oFacturas.Estatus = "3"; //Id del usuario que genero la factura oFacturas.idUsuario = Convert.ToInt32(Session["usuarioid"]); //Nombre del vendedor que en este caso es el usuario oFacturas.Vendedor = Session["nombre"].ToString(); //Registrar la factura if (oblFacturas.NuevoRegistro(oFacturas)) { oFacturas = new MedDAL.DAL.facturas(); oblFacturas = new MedNeg.Facturas.BlFacturas(); ////Recuperar el id de la factura crea| da oFacturas = oblFacturas.BuscarFacturasFolio(sIdFolioFactura); //Actualizar el consecutivo en la bitacora oblFacturas.ActualizarFolioFactura(sRutaArchivoConfig); //Insertar el detalle de factura //Recorrer el objeto de sesion lstDetallePartida que contiene los datos de la partida foreach (MedNeg.Facturas.BlDetalleFacturaReceta renglon in lstDetalleFactura) { oblFacturas = new MedNeg.Facturas.BlFacturas(); MedDAL.DAL.facturas_partida oFacturaPartida = new MedDAL.DAL.facturas_partida(); oFacturaPartida.idFactura = oFacturas.idFactura; oFacturaPartida.idProducto = renglon.iIdProducto; oFacturaPartida.Cantidad = renglon.dCantidad; oFacturaPartida.IEPS = renglon.dIeps; oFacturaPartida.Iva = renglon.DImp1 * consdIva; oFacturaPartida.Precio = renglon.DImp1; //Registrar el detalle del pedido if (!oblFacturas.NuevoDetallePartida(oFacturaPartida)) { bRegistroFallido = true; } else { } } //TODO: GT Paso 5.1 Aqui si bRegistroFallido es false entonces aqui se generaria la factura electronica de gastos administrativos if (cmbModoFactura.SelectedValue == "2" && !bRegistroFallido) { oblFacturas = new MedNeg.Facturas.BlFacturas(); oblFacturas.GenerarFacturaElectronica(oFacturas.idFactura, sRutaCertificados, Session["usuario"].ToString(), (int)Session["sIdCliente"], oFacturas.Folio); return Server.MapPath("~/Archivos/FacturasElectronicasTimbradas/FacturaE-" + oFacturas.Folio + ".xml"); //System.IO.FileInfo fFactura = new System.IO.FileInfo(Server.MapPath("~/Archivos/FacturasElectronicas/FacturaE-" + oFacturas.Folio + ".xml")); //Response.Clear(); //Response.AddHeader("Content-Disposition", "attachment; filename=" + fFactura.Name); //Response.AddHeader("Content-Length", fFactura.Length.ToString()); //Response.ContentType = "application/...."; //Response.WriteFile(fFactura.FullName); //Response.End(); } return ""; } return ""; }
/// <summary> /// Registrar nuevo pedido /// </summary> private void Nuevo() { string sRutaArchivoConfig = Server.MapPath("~/Archivos/Configuracion.xml"); string sRutaCertificados = Server.MapPath("~/Archivos/"); oFactura = new MedDAL.DAL.facturas(); oblFacturas = new MedNeg.Facturas.BlFacturas(); oFactura.idCliente = (int)Session["sIdCliente"]; if ((bool)Session["sEsDePedido"] == true) oFactura.idPedido = (int)Session["sIdPedido"]; if ((bool)Session["sEsDeRemision"] == true) oFactura.idRemision = (int)Session["sIdRemision"]; if ((bool)Session["sEsDeReceta"] == true) oFactura.idReceta = (int)Session["sIdReceta"]; oFactura.TipoFactura = cmbTipoFactura.SelectedValue.ToString(); oFactura.Fecha = DateTime.Now; oFactura.Estatus = cmbEstatus.SelectedValue; //Validar Folio Repetido if (ValidaFolioRepetido()) { //Validar si se esta respetando el folio automatico y verificar si aun es el mismo o cambio su valor if (Session["iFolioAutomatico"].Equals(txbFolio.Text)) { oFactura.Folio = oblFacturas.RecuperaFolioAutomatico(sRutaArchivoConfig).ToString(); } else { oFactura.Folio = txbFolio.Text; } if (oblFacturas.NuevoRegistro(oFactura)) { //Datos de la bitacora string sDatosBitacora = string.Empty; sDatosBitacora += "Tipo:" + cmbTipoFactura.SelectedValue.ToString() + " "; sDatosBitacora += "Folio:" + txbFolio.Text + " "; sDatosBitacora += "Fecha:" + txbFecha.Text + " "; sDatosBitacora += "Estatus:" + cmbEstatus.SelectedItem.ToString() + " "; sDatosBitacora += "Cliente:" + txbCliente.Text + " "; // Registrar la partida de la remision oFactura = new MedDAL.DAL.facturas(); oFactura = oblFacturas.BuscarFacturasFolio(txbFolio.Text); int iIdFactura = oFactura.idFactura; bool bRegistroFallido = false; //Recorrer el objeto de sesion lstDetallePartida que contiene los datos de la partida foreach (MedNeg.Facturas.BlDetallePartida facturaDetalle in (List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"]) { oblFacturas = new MedNeg.Facturas.BlFacturas(); MedDAL.DAL.facturas_partida oFacturaPartida = new MedDAL.DAL.facturas_partida(); oFacturaPartida.idFactura = iIdFactura; oFacturaPartida.idProducto = facturaDetalle.iIdProducto; oFacturaPartida.Cantidad = facturaDetalle.dCantidad; oFacturaPartida.IEPS = facturaDetalle.dIeps; oFacturaPartida.Iva = facturaDetalle.dIva; oFacturaPartida.Precio = facturaDetalle.dPrecio; oFacturaPartida.Descripcion = facturaDetalle.SProducto; //Registrar el detalle del pedido if (!oblFacturas.NuevoDetallePartida(oFacturaPartida)) { bRegistroFallido = true; } else { sDatosBitacora += "Producto:" + facturaDetalle.iIdProducto.ToString() + " "; sDatosBitacora += "Cant:" + facturaDetalle.dCantidad.ToString() + " "; sDatosBitacora += "IEPS:" + facturaDetalle.dIeps.ToString() + " "; sDatosBitacora += "Iva:" + facturaDetalle.dIva.ToString() + " "; sDatosBitacora += "Precio:" + facturaDetalle.dPrecio.ToString() + " "; sDatosBitacora += "Total:" + Convert.ToDecimal((facturaDetalle.dCantidad * facturaDetalle.dPrecio) + facturaDetalle.dIeps + facturaDetalle.dIva) + ", "; } } //Registrar datos de la remision en la bitacora //lblAviso.Text = "El usuario se ha registrado con éxito"; oBitacora = new MedDAL.DAL.bitacora(); oblBitacora = new MedNeg.Bitacora.BlBitacora(); oBitacora.FechaEntradaSrv = DateTime.Now; oBitacora.FechaEntradaCte = DateTime.Now;//Linea Temporal oBitacora.Modulo = "Factura"; oBitacora.Usuario = Session["usuario"].ToString(); oBitacora.Nombre = Session["nombre"].ToString(); oBitacora.Accion = "Nueva Factura"; oBitacora.Descripcion = sDatosBitacora; if (!oblBitacora.NuevoRegistro(oBitacora)) { lblDatos.Text = "El evento no pudo ser registrado en la bitácora"; } //Actualizar el consecutivo en la bitacora oblFacturas.ActualizarFolioFactura(sRutaArchivoConfig); //Generar la factura electronica if (cmbModoFactura.SelectedValue == "2") { oblFacturas = new MedNeg.Facturas.BlFacturas(); oblFacturas.GenerarFacturaElectronica(iIdFactura, sRutaCertificados, Session["usuario"].ToString(), (int)Session["sIdCliente"], txbFolio.Text); System.IO.FileInfo fFactura = new System.IO.FileInfo(Server.MapPath("~/Archivos/FacturasElectronicas/FacturaE-" + txbFolio.Text + ".xml")); Response.Clear(); Response.AddHeader("Content-Disposition", "attachment; filename=" + fFactura.Name); Response.AddHeader("Content-Length", fFactura.Length.ToString()); Response.ContentType = "application/...."; Response.WriteFile(fFactura.FullName); Response.End(); } //Saber si se va a actualizar el estatus del pedido if ((bool)Session["sEsDePedido"] == true) { //Actualizar el estatus del pedido en caso de que se haya hecho la remision a partir de un pedido MedDAL.DAL.pedidos oPedido = new MedDAL.DAL.pedidos(); MedNeg.Pedidos.BlPedidos oblPedido = new MedNeg.Pedidos.BlPedidos(); //Actualizar el estatus del pedido oPedido = oblPedido.BuscarPedido((int)Session["sIdPedido"]); oPedido.Estatus = "3"; if (!oblPedido.EditarRegistro(oPedido)) { lblDatos.Text = "No se pudo cambiar el estatus del pedido, contacte al administrador"; } } //Saber si se va a actualizar el estatus de la remision if ((bool)Session["sEsDeRemision"] == true) { //Actualizar el estatus del pedido MedDAL.DAL.remisiones oRemision = new MedDAL.DAL.remisiones(); MedNeg.Remisiones.BlRemisiones oblRemision = new MedNeg.Remisiones.BlRemisiones(); oRemision = oblRemision.BuscarRemision((int)Session["sIdRemision"]); oRemision.Estatus = "3"; if (!oblRemision.EditarRegistro(oRemision)) { lblDatos.Text = "No se pudo cambiar el estatus de la remisión, contacte al administrador"; } } //Saber si se va a actualizar el estatus de la remision if ((bool)Session["sEsDeReceta"] == true) { //Actualizar el estatus del pedido MedDAL.DAL.remisiones oRemision = new MedDAL.DAL.remisiones(); MedNeg.Remisiones.BlRemisiones oblRemision = new MedNeg.Remisiones.BlRemisiones(); MedDAL.DAL.recetas oReceta = new MedDAL.DAL.recetas(); MedNeg.Recetas.BlRecetas oblRecetas = new MedNeg.Recetas.BlRecetas(); oReceta = oblRecetas.BuscarReceta((int)Session["sIdReceta"]); oReceta.Estatus = "2"; if (!oblRecetas.EditarRegistro(oReceta)) { lblDatos.Text = "No se pudo cambiar el estatus de la receta, contacte al administrador"; } } } else { } } else //si es folio repetido { lblDatos.Text = "Folio Repetido, no se puede generar el pedido"; } }
private string CrearFacturaSubTotales(string sFolio,decimal dSubtotalFacturar) { //TODO: GT Paso 6: Paso opcional, aqui se genera la factura por sub totales si lo eligio el usuario //objeto que contiene la receta string sRutaArchivoConfig = Server.MapPath("~/Archivos/Configuracion.xml"); string sRutaCertificados = Server.MapPath("~/Archivos/"); bool bRegistroFallido = false; //MedDAL.DAL.recetas oReceta = new MedDAL.DAL.recetas(); //MedNeg.Recetas.BlRecetas oblReceta = new MedNeg.Recetas.BlRecetas(); MedNeg.Configuracion.BlConfiguracion oblConfiguracion = new MedNeg.Configuracion.BlConfiguracion(); MedDAL.Configuracion.DALConfiguracion odalConfiguracion = new MedDAL.Configuracion.DALConfiguracion(); MedDAL.DAL.facturas oFacturas = new MedDAL.DAL.facturas(); MedNeg.Facturas.BlFacturas oblFacturas = new MedNeg.Facturas.BlFacturas(); //decimal dSubtotal = 0; //int idReceta = 0; odalConfiguracion = (MedDAL.Configuracion.DALConfiguracion)oblConfiguracion.CargaDatos(sRutaArchivoConfig); //ID Cliente oFacturas.idCliente = (int)Session["sIdCliente"]; //IDRECETA //oFacturas.idReceta = oReceta.idReceta; //Asiganr el folio de la factura if (odalConfiguracion.iFacturasAutomatico == 1) { oFacturas.Folio = odalConfiguracion.iFolioFacturas++.ToString(); } else { //oFacturas.Folio = oReceta.Folio; oFacturas.Folio = sFolio + "-GastoAdm"; } string sIdFolioFactura = oFacturas.Folio; //Fecha oFacturas.Fecha = DateTime.Now; oFacturas.FechaAplicacion = DateTime.Now; //tipo (4 por que son de receta) oFacturas.TipoFactura = "4"; //Estatus (3 de emitida) oFacturas.Estatus = "3"; //Id del usuario que genero la factura oFacturas.idUsuario=Convert.ToInt32(Session["usuarioid"]); //Nombre del vendedor que en este caso es el usuario oFacturas.Vendedor = Session["nombre"].ToString(); //Registrar la factura if (oblFacturas.NuevoRegistro(oFacturas)) { oFacturas = new MedDAL.DAL.facturas(); oblFacturas = new MedNeg.Facturas.BlFacturas(); ////Recuperar el id de la factura crea| da oFacturas = oblFacturas.BuscarFacturasFolio(sIdFolioFactura); //Actualizar el consecutivo en la bitacora oblFacturas.ActualizarFolioFactura(sRutaArchivoConfig); //Insertar el detalle de factura oblFacturas = new MedNeg.Facturas.BlFacturas(); MedDAL.DAL.facturas_partida oFacturaPartida = new MedDAL.DAL.facturas_partida(); oFacturaPartida.idFactura = oFacturas.idFactura; oFacturaPartida.idProducto = (int)Session["sIdProductoFxR"]; oFacturaPartida.Cantidad = 1; oFacturaPartida.IEPS = 0; //Identificar de cuanto va a ser la factura de subtotales, si un porciento del subtotal o un monto especifico if (txbMonto.Text == "" && txbPorcentaje.Text=="") { oFacturaPartida.Precio = dSubtotalFacturar; oFacturaPartida.Iva = dSubtotalFacturar * consdIva; } else if (txbMonto.Text != "") //El sub total es por monto { oFacturaPartida.Precio = Convert.ToDecimal(txbMonto.Text); oFacturaPartida.Iva = Convert.ToDecimal(txbMonto.Text) * consdIva; } else if(txbPorcentaje.Text!="") //El sub total es por porcentaje del monto de sub total { oFacturaPartida.Precio=dSubtotalFacturar*(Convert.ToDecimal(txbPorcentaje.Text)/100); oFacturaPartida.Iva=consdIva*(dSubtotalFacturar*(Convert.ToDecimal(txbPorcentaje.Text)/100)); } oFacturaPartida.Descripcion = txbProductos.Text; oFacturaPartida.Observaciones = ""; //Registrar el detalle del pedido if (!oblFacturas.NuevoDetallePartida(oFacturaPartida)) { bRegistroFallido = true; } else { } //TODO: GT Paso 6.1 Aqui si bRegistroFallido es false entonces aqui se generaria la factura electronica con los datos de sub totales if (cmbModoFactura.SelectedValue == "2" && !bRegistroFallido) { oblFacturas = new MedNeg.Facturas.BlFacturas(); oblFacturas.GenerarFacturaElectronica(oFacturas.idFactura, sRutaCertificados, Session["usuario"].ToString(), (int)Session["sIdCliente"], oFacturas.Folio); return Server.MapPath("~/Archivos/FacturasElectronicasTimbradas/FacturaE-" + oFacturas.Folio + ".xml"); //System.IO.FileInfo fFactura = new System.IO.FileInfo(Server.MapPath("~/Archivos/FacturasElectronicas/FacturaE-" + oFacturas.Folio + ".xml")); //Response.Clear(); //Response.AddHeader("Content-Disposition", "attachment; filename=" + fFactura.Name); //Response.AddHeader("Content-Length", fFactura.Length.ToString()); //Response.ContentType = "application/...."; //Response.WriteFile(fFactura.FullName); //Response.End(); } return ""; } return ""; }
/// <summary> /// 2013/03/10 Jorge Ibarra /// Crea una instancia de factura, la guarda, y en caso de ser electrónica la procesa para ser timbrada /// </summary> private bool AddFactura() { string sRutaArchivoConfig = Server.MapPath("~/Archivos/Configuracion.xml"); MedDAL.Facturas.DALFacturas oDALFacturas = new MedDAL.Facturas.DALFacturas(); oblFacturas = new MedNeg.Facturas.BlFacturas(); oFactura = SetObjetoFactura(); //Coloca la partida en la factura y además resta las existencias en el almacén correspondiente if (!SetObjetoFacturaPartida(ref oFactura, oDALFacturas.MedicuriEntities)) { Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert(Ha ocurrido un error: \n" + oDALFacturas.GetError() + ")", true); return false; } if (!oDALFacturas.Add(oFactura, oDALFacturas.MedicuriEntities)) { Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert(Ha ocurrido un error: \n" + oDALFacturas.GetError() + ")", true); return false; } //Saber si se va a actualizar el estatus del pedido if ((bool)Session["sEsDePedido"] == true) { oFactura.pedidos.Estatus = "3"; } //Saber si se va a actualizar el estatus de la remision if ((bool)Session["sEsDeRemision"] == true) { oFactura.remisiones.Estatus = "3"; } //Saber si se va a actualizar el estatus de la remision if ((bool)Session["sEsDeReceta"] == true) { oFactura.recetas.Estatus = "2"; } if (oDALFacturas.SaveChanges(oDALFacturas.MedicuriEntities)) { oBitacora = new MedDAL.DAL.bitacora(); oblBitacora = new MedNeg.Bitacora.BlBitacora(); oBitacora.FechaEntradaSrv = DateTime.Now; oBitacora.FechaEntradaCte = DateTime.Now;//Linea Temporal oBitacora.Modulo = "Factura"; oBitacora.Usuario = Session["usuario"].ToString(); oBitacora.Nombre = Session["nombre"].ToString(); oBitacora.Accion = "Nueva Factura"; oBitacora.Descripcion = sDatosBitacora; if (!oblBitacora.NuevoRegistro(oBitacora)) { lblDatos.Text = "El evento no pudo ser registrado en la bitácora"; } oblFacturas.ActualizarFolioFactura(sRutaArchivoConfig); return true; } else { Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert(Ha ocurrido un error: \n" + oDALFacturas.GetError() + ")", true); return false; } }