//Funcion que ejecuta la Facturacion de la Liquidacion de manera integral //devuelve el codigo de factura generado o -1 en el caso de error protected int FacturarLiquidacion() { int cod_factura; try { /*Ejecuto el procedieminto de Facturacion de la Liquidacion*/ using (SqlConnection conexion = new SqlConnection(FacturaDataSource.ConnectionString)) { conexion.Open(); SqlCommand comando = new SqlCommand(); comando.CommandType = CommandType.StoredProcedure; comando.Connection = conexion; comando.CommandText = "sp_facturar_liquidacion"; comando.Parameters.AddWithValue("@p_cod_liquidacion", CodigoLiquidacion); comando.Parameters.AddWithValue("@p_nro_factura", NroFactura); comando.Parameters.AddWithValue("@p_fecha_factura", FechaFactura); comando.Parameters.AddWithValue("@p_tipo_factura", ((DropDownList)FacturaFormView.FindControl("new_tipo_facturaDDL")).SelectedValue); comando.Parameters.AddWithValue("@p_cod_moneda", ((DropDownList)FacturaFormView.FindControl("new_monedaDDL")).SelectedValue); SqlParameter p_cod_factura = new SqlParameter("@p_cod_factura", SqlDbType.Int); p_cod_factura.Direction = ParameterDirection.Output; comando.Parameters.Add(p_cod_factura); comando.CommandTimeout = 0; //Facturo la liquidación comando.ExecuteNonQuery(); //Obtengo el Codigo de Factura generado cod_factura = Convert.ToInt32(comando.Parameters["@p_cod_factura"].Value); } //Actualizo los impouestos CalcularImpuestosFactura(cod_factura); return(cod_factura); } catch (Exception ex) { return(-1); } }
/* * Funcion que factura la liquidacion en su totalidad despendiendo del * Codigo de liquidacion * Autor: Christian Balbuena * Fecha: 29/02/2013 */ protected void FacturarLiquidacionBtn_Click(object sender, EventArgs e) { try { //Asigno el Numero de factura NroFactura = ((TextBox)FacturaFormView.FindControl("new_num_facturaTB")).Text; FechaFactura = ((TextBox)FacturaFormView.FindControl("new_fechaTB")).Text; if (NroFactura != null && NroFactura != "") { if (CodigoLiquidacion != null && CodigoLiquidacion != "") { if (FacturarLiquidacion() >= 0) { //Limpio el cuadro de Numero de factura ya que se facturo con exito esta ((TextBox)FacturaFormView.FindControl("new_num_facturaTB")).Text = ""; RefrescarGrillas(); Verificarfacturacion(); SetFocusControl("#facturas"); } else { Core.Util.ShowAlert("No se pudo efectuar la facturacion."); } } else { Core.Util.ShowAlert("La liquidación no es valida."); } } else { Core.Util.ShowAlert("El campo nro. de factura debe tener información."); } } catch (Exception ex) { Core.Util.ShowAlert("Error al facturar: " + ex.Message); } }
//Procedimiento que factura los concpetos de manera individual protected void FacturarConceptosBtn_Click(object sender, EventArgs e) { int v_cod_factura; try { //Asigno el Numero de factura NroFactura = ((TextBox)FacturaFormView.FindControl("new_num_facturaTB")).Text; FechaFactura = ((TextBox)FacturaFormView.FindControl("new_fechaTB")).Text; //Agrego la cabecera de la Factura de conceptos /*Ejecuto el procedieminto de Facturacion de la Liquidacion*/ using (SqlConnection conexion = new SqlConnection(FacturaDataSource.ConnectionString)) { conexion.Open(); SqlCommand comando = new SqlCommand(); comando.CommandType = CommandType.StoredProcedure; comando.Connection = conexion; comando.CommandText = "sp_facturar_liquidacion_cabecera"; comando.Parameters.AddWithValue("@p_cod_liquidacion", CodigoLiquidacion); comando.Parameters.AddWithValue("@p_nro_factura", NroFactura); comando.Parameters.AddWithValue("@p_fecha_factura", FechaFactura); comando.Parameters.AddWithValue("@p_tipo_factura", ((DropDownList)FacturaFormView.FindControl("new_tipo_facturaDDL")).SelectedValue); comando.Parameters.AddWithValue("@p_cod_moneda", ((DropDownList)FacturaFormView.FindControl("new_monedaDDL")).SelectedValue); SqlParameter p_cod_factura = new SqlParameter("@p_cod_factura", SqlDbType.Int); p_cod_factura.Direction = ParameterDirection.Output; comando.Parameters.Add(p_cod_factura); comando.CommandTimeout = 0; //Facturo la liquidación comando.ExecuteNonQuery(); //Obtengo el Codigo de Factura generado v_cod_factura = Convert.ToInt32(comando.Parameters["@p_cod_factura"].Value); conexion.Close(); } //Seccion de insercion de Detalles GridViewRow dr; //Agrego los Conceptos de la tabla Temporal using (Models.WerkERPContext db = new WerkUI.Models.WerkERPContext()) { for (int i = 0; i <= FacturaDetalleGeneradaGridView.Rows.Count - 1; i++) { dr = FacturaDetalleGeneradaGridView.Rows[i]; Models.FacturaDetalle detalle = new Models.FacturaDetalle { Cod__Concepto = Convert.ToInt32(dr.Cells[4].Text), cod_factura = v_cod_factura, Cod__Liquidación = Convert.ToInt32(CodigoLiquidacion), Concepto = dr.Cells[1].Text, Comentario = dr.Cells[3].Text, Importe = Convert.ToDecimal(dr.Cells[2].Text), Grupo = Convert.ToInt32(dr.Cells[0].Text) }; db.FacturaDetalles.Add(detalle); } //Guardo los cmabios en la DB db.SaveChanges(); } //Actualizo los impouestos CalcularImpuestosFactura(v_cod_factura); //Elimino los Conceptos por facturar correspondiente a la factura EliminarConceptosMarcados(Convert.ToInt32(CodigoLiquidacion)); //Actualizo las grillas RefrescarGrillas(); //Verifico las facturaciones Verificarfacturacion(); //Limpio el cuadro de Numero de factura ya que se facturo con exito esta ((TextBox)FacturaFormView.FindControl("new_num_facturaTB")).Text = ""; //me posiciono en la seccion de facturas generadas SetFocusControl("#facturas"); } catch (Exception ex) { Core.Util.ShowAlert("Error al facturar conceptos: " + ex.Message); } }
//Procedimiento que agrega los conceptos de forma independiente para su facturacion en facturas separadas protected void AgregarBtn_Click(object sender, EventArgs e) { Decimal vImporte; try { //Asigno el Numero de factura NroFactura = ((TextBox)FacturaFormView.FindControl("new_num_facturaTB")).Text; FechaFactura = ((TextBox)FacturaFormView.FindControl("new_fechaTB")).Text; if (NroFactura != null && NroFactura != "") { using (Models.WerkERPContext db = new WerkUI.Models.WerkERPContext()) { for (int i = 0; i <= FacturaDetalleGridView.Rows.Count - 1; i++) { GridViewRow row = (GridViewRow)FacturaDetalleGridView.Rows[i]; CheckBox chk = (CheckBox)row.FindControl("ConceptoCheck"); if (chk.Checked) { try { vImporte = Convert.ToDecimal(row.Cells[5].Text); } catch (Exception ax) { vImporte = 0; } InsertarConceptoMarcado(Convert.ToInt32(row.Cells[1].Text), Convert.ToInt32(row.Cells[2].Text), Convert.ToInt32(row.Cells[4].Text), 0, row.Cells[3].Text, vImporte, ""); // Habilitamos el boton para que se pueda eliminar la operacion this.EliminarBtn.Enabled = true; this.FacturarConceptosBtn.Enabled = true; } } } this.FacturaDetalleGeneradaGridView.DataBind(); // Cargamos nuevamente la grilla this.FacturaDetalleGridView.DataBind(); //Muevo el foco a la tabla de Faturas generadas SetFocusControl("#Generada"); } else { Core.Util.ShowAlert("El campo nro. de factura debe tener información."); } } catch (Exception ex) { Core.Util.ShowAlert("Error al agregar concepto: " + ex.Message); } }
//Procediemiento que recupera los datos de la liquidacion //segun el codigo de liquidacion que recibe la pagina private void Obtener_datos_liquidacion(int p_cod_liquidacion) { try { /*Codigo de Inicializacion Beta*/ object[] para = { p_cod_liquidacion }; Models.V_LIQUIDACIONES vLiq; //Models.ProFormaFactura pFormFac = new Models.ProFormaFactura(); if (p_cod_liquidacion > 0) { TextBox txtNew_fact = (TextBox)FacturaFormView.FindControl("new_num_facturaTB"); TextBox txtNew_ruc = (TextBox)FacturaFormView.FindControl("new_ruc_despachanteTB"); using (Models.WerkERPContext db = new WerkUI.Models.WerkERPContext()) { //Obtengo la Liquidacion segun el cod_liquidacion recibdo por el formulario web vLiq = db.V_LIQUIDACIONES.Find(para); } ((TextBox)FacturaFormView.FindControl("new_num_facturaTB")).Attributes.Add("onblur", "javascript:verifyNroFactura(this,'" + vLiq.R_U_C__Despachante + "');"); // Asignamos los valores a los campos del form view ((TextBox)FacturaFormView.FindControl("new_fechaTB")).Text = ((DateTime)vLiq.Fecha).ToShortDateString(); // DateTime.Now.ToShortDateString(); ((TextBox)FacturaFormView.FindControl("new_clienteTB")).Text = vLiq.Cliente.Trim(); ((TextBox)FacturaFormView.FindControl("new_CodClienteTB")).Text = vLiq.CODUSUARIO.ToString(); ((TextBox)FacturaFormView.FindControl("new_num_liquidacionTB")).Text = vLiq.Nro__Liquidación.ToString(); ((DropDownList)FacturaFormView.FindControl("new_monedaDDL")).SelectedIndex = 0; ((TextBox)FacturaFormView.FindControl("new_telefonoTB")).Text = vLiq.Teléfono.Trim(); ((TextBox)FacturaFormView.FindControl("new_rucTB")).Text = vLiq.R_U_C_.Trim(); ((TextBox)FacturaFormView.FindControl("new_direccionTB")).Text = vLiq.Dirección.Trim(); ((TextBox)FacturaFormView.FindControl("new_despachanteTB")).Text = vLiq.Despachante.Trim(); ((TextBox)FacturaFormView.FindControl("new_ruc_despachanteTB")).Text = vLiq.R_U_C__Despachante.Trim(); ((DropDownList)FacturaFormView.FindControl("new_tipo_facturaDDL")).SelectedIndex = 1; ((TextBox)FacturaFormView.FindControl("new_despacho_internoTB")).Text = vLiq.Nro__Despacho_Interno.Trim(); ((TextBox)FacturaFormView.FindControl("new_tipo_movimientoTB")).Text = vLiq.Tipo_Movimiento.Trim(); ((TextBox)FacturaFormView.FindControl("new_despachoTB")).Text = vLiq.Nro__Despacho.Trim(); ((TextBox)FacturaFormView.FindControl("new_totalTB")).Text = Core.Util.GetFormatedNumber(vLiq.Total); ((TextBox)FacturaFormView.FindControl("new_iva_gastosTB")).Text = Core.Util.GetFormatedNumber(vLiq.IVA_Gastos); ((TextBox)FacturaFormView.FindControl("new_iva_honorariosTB")).Text = Core.Util.GetFormatedNumber(vLiq.IVA_Honorarios); ((TextBox)FacturaFormView.FindControl("new_retencion_ivaTB")).Text = Core.Util.GetFormatedNumber(vLiq.IVA_Retención); ((TextBox)FacturaFormView.FindControl("new_retencion_iva_gastosTB")).Text = Core.Util.GetFormatedNumber(vLiq.IVA_Ret__Gastos); ((TextBox)FacturaFormView.FindControl("new_retencion_iva_honorariosTB")).Text = Core.Util.GetFormatedNumber(vLiq.IVA_Ret__Honorarios); } FacturaDetalleGeneradaGridView.DataBind(); } catch (Exception ex) { Core.Util.ShowAlert("Error al obtener datos liquidación: " + ex.Message); } }