public void CalcularImporteOrdenRetiro() { Importe = 0; // Reviso si se trata de un concepto de facturación if (ConceptoFacturacionID != null) { // Se trata de un concepto de facturación. busco los datos de este ConceptoFacturacion concepto = new ConceptoFacturacion(); TarifarioConceptoFacturable tarifario = new TarifarioConceptoFacturable();; concepto.GetOne(ConceptoFacturacionID ?? 0); Int32 EstadoCodigoBarras; ICodigoBarras codigoBarras = new CodigoBarras(); EstadoCodigoBarras = codigoBarras.ObtieneEstado(CodigoBarras); //Se pueden cargar dos estados o el 7( Emitido Asignado) o el 8(Emitido Prevendido) //esto es asi porque cuando se validan las OR, es cuando se guardan los CB. FQuiroga if (EstadoCodigoBarras == (int)SisPack.EstadoCodigoBarras.EmitidoAsignado)//asignado { // Busco los datos del código de barras (es para obtener un posible tarifario asociado al código de barras) DsCodigosBarras dsCodigo = new DsCodigosBarras(); Int32? _TarifarioFleteID_CB = null; if (CodigoBarras != "" && CodigoBarras != null) { SqlParameter pCodigoBarras = new SqlParameter("@CodigoBarras", Utiles.BaseDatos.StrToSql(CodigoBarras)); DsCodigosBarras dsCodigoBarras = new DsCodigosBarras(); Config.Conexion.LlenarTypeDataSet(dsCodigoBarras.Datos, System.Data.CommandType.StoredProcedure, "CodigoBarrasGetOne", pCodigoBarras); if (dsCodigoBarras.Datos.Rows.Count > 0) { _TarifarioFleteID_CB = dsCodigoBarras.Datos[0].IsTarifarioFleteIDNull() ? 0 : dsCodigoBarras.Datos[0].TarifarioFleteID; } } // Con el tarifario de concepto calculo los importes. tarifario.GetOneForEmision(_TarifarioFleteID_CB ?? 0); CalcularImporteConTarifario(tarifario); } else if (EstadoCodigoBarras == (int)SisPack.EstadoCodigoBarras.EmitidoPrevendido) // Se prevendio buscar tarifas de preventa { // obtengo importes de preventa DsSubConceptoFacturable ds = new DsSubConceptoFacturable(); SqlParameter pCodigoBarras = new SqlParameter("@CodigoBarras", CodigoBarras); Config.Conexion.LlenarTypeDataSet(ds.Datos, System.Data.CommandType.StoredProcedure, "ObtieneTarifaPreventaSEL", pCodigoBarras); foreach (DsSubConceptoFacturable.DatosRow dr in ds.Datos.Rows) { switch (dr.SubConceptoFacturableID) { case (int)SisPack.SubConceptoFacturable.FleteNacional: // Guardo el importe de flete para restarlo al final, porque es prevendido ImporteFleteConvenioCB = dr.Importe; Importe += dr.Importe; break; } } } Importe = Utiles.Matematicas.Redondear(Importe, 2); } }
public void CalcularImporte() { Importe = 0; // Reviso si se trata de un concepto de facturación if (ConceptoFacturacionID != null) { // Se trata de un concepto de facturación. busco los datos de este ConceptoFacturacion concepto = new ConceptoFacturacion(); TarifarioConceptoFacturable tarifario = new TarifarioConceptoFacturable();; concepto.GetOne(ConceptoFacturacionID ?? 0); // Desarrollo de emision de facturas con codigos de barras. Si la factura no tiene codigos de barras, sigo el camino normal if (CodigoBarras == String.Empty || CodigoBarras == null) { // Obtengo el tarifario a utilizar // Reviso si el concepto de facturación tiene cargado un tarifario a utilizar if (concepto.TarifarioConceptoFacturableID != null) { // El concepto de facturación tiene cargado un tarifario. Utilizo este para el calculo tarifario.GetOneForEmision(concepto.TarifarioConceptoFacturableID ?? 0); } else { // El concepto de facturación no tiene cargado un tarifario. Busco el tarifario predeterminado tarifario.GetTarifarioPredeterminado(concepto.TipoTarifarioConceptoFacturableID ?? 0); tarifario.GetOneForEmision(tarifario.TarifarioConceptoFacturableID ?? 0); } // Controlo el tarifario if (tarifario.TarifarioConceptoFacturableID == null) { throw new Exception("Datos inválidos: El concepto " + concepto.Descripcion + " no tiene configurado un tarifario y no se encuentra uno general"); } else if (tarifario.Baja ?? false) { throw new Exception("Datos inválidos: El tarifario del concepto " + concepto.Descripcion + " está dado de baja"); } CalcularImporteConTarifario(tarifario); // Se comenta el codigo de abajo, se saca en el metodo CalcularImporteConTarifario //// Calculo el importe //if (tarifario.EsTarifarioImporteFijo == false) //{ // Double cantExcedente = 0; // // Busco el tope a utilizar // ITarifarioConceptoFacturableTope _tope = (from t in tarifario.LstTopes // where (t.Tope ?? 0) >= (Tope ?? 0) // select t).OrderBy(x => x.Tope).FirstOrDefault(); // if (_tope == null) // { // // No se encontro un tope. Esto quiere decir que se exede el máximo definido. Se trabaja con el máximo tope y se cobra el excedente // _tope = tarifario.LstTopes.OrderBy(x => x.Tope).LastOrDefault(); // cantExcedente = (Tope ?? 0) - (_tope.Tope ?? 0); // } // if (_tope != null) // { // //if (tarifario.TarifarioConceptoFacturableRefID == null) // if (tarifario.TipoTarifarioConceptoFacturableID == (int)SisPack.TipoTarifarioConceptoFacturable.Tarifariosporbultos) // { // if (cantExcedente > 0) // { // Importe = (_tope.Valor * (Tope - cantExcedente) ?? 0); // Importe = Importe + (cantExcedente * (tarifario.ValorTopeAdicional ?? 0)); // } // else // { // Importe = (_tope.Valor * Tope ?? 0); // } // } // else // { // //Modificado para que tome la modificacion de medida adicional // Importe = (_tope.Valor ?? 0) + (Math.Ceiling((Math.Round(cantExcedente, 4) / tarifario.MedidaAdicional ?? 1)) * (tarifario.ValorTopeAdicional ?? 0)); // //Importe = (_tope.Valor ?? 0) + (cantExcedente * (tarifario.ValorTopeAdicional ?? 0)); // //Importe = (_tope.ValorConVaricionTarifarioRef ?? 0) + (cantExcedente * (tarifario.ValorTopeAdicional ?? 0)); // } // } // else // { // throw new Exception("Error en el tarifario. No se encontró un tope a utilizar"); // } //} //else //{ // // Se trata de un tarifario con importe fijo // if (tarifario.TarifarioConceptoFacturableRefID == null) // { // Importe = tarifario.ValorImporteFijo ?? 0; // } // else // { // //tarifario.GetImporteFijoTarifarioReferencia(tarifario.TarifarioConceptoFacturableRefID ?? 0); // Importe = tarifario.ValorImporteFijoAjustado ?? 0; // } //} } // Desarrollo de emision de facturas con codigos de barras. La factura tiene codigos de barras, busco tarifas de preventa, o tarifario asignado, dependiendo del tipo de asignacion else { Int32 EstadoCodigoBarras; ICodigoBarras codigoBarras = new CodigoBarras(); EstadoCodigoBarras = codigoBarras.ObtieneEstado(CodigoBarras); //Se asigno buscar tarifario de concepto facturacion if (EstadoCodigoBarras == (int)SisPack.EstadoCodigoBarras.AsignadoAgencia || EstadoCodigoBarras == (int)SisPack.EstadoCodigoBarras.AsignadoCliente)//asignado { // Busco los datos del código de barras (es para obtener un posible tarifario asociado al código de barras) DsCodigosBarras dsCodigo = new DsCodigosBarras(); Int32? _TarifarioFleteID_CB = null; if (CodigoBarras != "" && CodigoBarras != null) { SqlParameter pCodigoBarras = new SqlParameter("@CodigoBarras", Utiles.BaseDatos.StrToSql(CodigoBarras)); DsCodigosBarras dsCodigoBarras = new DsCodigosBarras(); Config.Conexion.LlenarTypeDataSet(dsCodigoBarras.Datos, System.Data.CommandType.StoredProcedure, "CodigoBarrasGetOne", pCodigoBarras); if (dsCodigoBarras.Datos.Rows.Count > 0) { _TarifarioFleteID_CB = dsCodigoBarras.Datos[0].IsTarifarioFleteIDNull() ? 0 : dsCodigoBarras.Datos[0].TarifarioFleteID; } } // Con el tarifario de concepto calculo los importes. tarifario.GetOneForEmision(_TarifarioFleteID_CB ?? 0); CalcularImporteConTarifario(tarifario); } else if (EstadoCodigoBarras == (int)SisPack.EstadoCodigoBarras.Prevendido) // Se prevendio buscar tarifas de preventa { // obtengo importes de preventa DsSubConceptoFacturable ds = new DsSubConceptoFacturable(); SqlParameter pCodigoBarras = new SqlParameter("@CodigoBarras", CodigoBarras); Config.Conexion.LlenarTypeDataSet(ds.Datos, System.Data.CommandType.StoredProcedure, "ObtieneTarifaPreventaSEL", pCodigoBarras); foreach (DsSubConceptoFacturable.DatosRow dr in ds.Datos.Rows) { switch (dr.SubConceptoFacturableID) { case (int)SisPack.SubConceptoFacturable.FleteNacional: // Guardo el importe de flete para restarlo al final, porque es prevendido ImporteFleteConvenioCB = dr.Importe; Importe += dr.Importe; break; } } } } } Importe = Utiles.Matematicas.Redondear(Importe, 2); }
public bool Guardar() { System.Data.SqlClient.SqlConnection conexion = new System.Data.SqlClient.SqlConnection(); System.Data.SqlClient.SqlTransaction transaccion; conexion.ConnectionString = Config.ConnectionString; conexion.Open(); transaccion = conexion.BeginTransaction(); CodigoBarras codigoBarras = new CodigoBarras(); DsCodigosBarras ds = null; try { //reviso que no exista ninguno de los códigos del rango en la tabla codigoBarras //ds = codigoBarras.GetCodigoBarrasByRango(Convert.ToInt64(this.CodigoBarrasInicial), Convert.ToInt64(this.CodigoBarrasFinal),0); //0=cualquier estado ds = codigoBarras.GetCodigoBarrasByRango(this.CodigoBarrasInicial, this.CodigoBarrasFinal, 0); //0=cualquier estado if (ds.Datos.Count <= 0) { rangoCodigoBarrasID = Convert.ToInt32( Config.Conexion.EjecutarResultadoUnico(transaccion, "RangoCodigoBarrasINS", this.CodigoBarrasInicial, this.CodigoBarrasFinal, this.EstadoCodigoBarrasID, this.usuarioID, Utiles.BaseDatos.IntToSql(this.UnidadVentaID), Utiles.BaseDatos.IntToSql(this.ServicioID), Utiles.BaseDatos.IntToSql(this.ModalidadEntregaID), Utiles.BaseDatos.IntToSql(0), //TarifaPreventaID Utiles.BaseDatos.IntToSql(0), //AgenciaID Utiles.BaseDatos.IntToSql(0), //ClienteID Utiles.BaseDatos.IntToSql(0), //VendedorID Utiles.BaseDatos.IntToSql(this.MotivoID), Utiles.BaseDatos.IntToSql(TarifarioFleteID), Utiles.BaseDatos.IntToSql(ConceptoFacturacionID) )); codigoBarras = new CodigoBarras(); codigoBarras.UnidadVentaID = this.UnidadVentaID; codigoBarras.ServicioID = this.ServicioID; codigoBarras.ModalidadEntregaID = this.ModalidadEntregaID; codigoBarras.ConceptoFacturacionID = this.ConceptoFacturacionID; codigoBarras.Generar(transaccion, this.CodigoBarrasInicial, this.CodigoBarrasFinal); transaccion.Commit(); return(true); } else { //transaccion.Rollback(); string codigosBarras = ""; int i = 1; foreach (DsCodigosBarras.DatosRow dr in ds.Datos) { codigosBarras += dr.CodigoBarras; if (i < ds.Datos.Count) { codigosBarras += " - "; } i++; } throw new Exception("Los siguientes códigos ya se encuentran asignados: <br>" + codigosBarras); } } catch (Exception ex) { transaccion.Rollback(); throw new Exception(ex.Message, ex); } finally { conexion.Close(); } }
public bool Prevender(double valorDeclarado, double importeCR, Hashtable subConceptos) { System.Data.SqlClient.SqlConnection conexion = new System.Data.SqlClient.SqlConnection(); System.Data.SqlClient.SqlTransaction transaccion; conexion.ConnectionString = Config.ConnectionString; conexion.Open(); transaccion = conexion.BeginTransaction(); CodigoBarras codigoBarras = new CodigoBarras(); DsCodigosBarras ds = null; try { //reviso que ninguno de los códigos del rango que se quiere prevender //esté prevendido ds = codigoBarras.GetCodigoBarrasByRango(this.CodigoBarrasInicial, this.CodigoBarrasFinal, 3); //ds = codigoBarras.GetCodigoBarrasByRango(Convert.ToInt64(this.CodigoBarrasInicial), Convert.ToInt64(this.CodigoBarrasFinal), 3); if (ds.Datos.Count <= 0) { // guardo los datos de la tarifa de preventa ingresada GuardarTarifaPreventa(transaccion, subConceptos, valorDeclarado, importeCR); rangoCodigoBarrasID = this.Guardar(transaccion); codigoBarras = new CodigoBarras(); codigoBarras.UnidadVentaID = this.UnidadVentaID; codigoBarras.ServicioID = this.ServicioID; codigoBarras.ModalidadEntregaID = this.ModalidadEntregaID; codigoBarras.AgenciaID = this.AgenciaID; codigoBarras.VendedorID = this.VendedorID; codigoBarras.ClienteID = this.ClienteID; codigoBarras.EstadoCodigoBarrasID = this.EstadoCodigoBarrasID; //prevendido codigoBarras.FechaAlta = DateTime.Now; //codigoBarras.ValorDeclaradoUnitario = valorDeclarado; codigoBarras.TarifaPreVentaID = this.TarifaPreVentaID; codigoBarras.ConceptoFacturacionID = this.ConceptoFacturacionID; codigoBarras.ActualizarCodigoBarras(transaccion, this.CodigoBarrasInicial, this.CodigoBarrasFinal); transaccion.Commit(); return(true); } else { //transaccion.Rollback(); string codigosBarras = ""; int i = 1; foreach (DsCodigosBarras.DatosRow dr in ds.Datos) { codigosBarras += dr.CodigoBarras; if (i < ds.Datos.Count) { codigosBarras += " - "; } i++; } throw new Exception("Los siguientes códigos ya se encuentran asignados: <br>" + codigosBarras); } } catch (Exception ex) { transaccion.Rollback(); throw new Exception(ex.Message, ex); } finally { conexion.Close(); } }
private void btnGuardar_Click(object sender, System.EventArgs e) { try { IUsuarios usuario = (IUsuarios)Session["Usuario"]; int retorno = 0; string nroCodigoBarrasDesde = string.Empty; string nroCodigoBarrasHasta = string.Empty; if (!int.TryParse(txtDesde.Text.Substring(0, 1), out retorno)) { for (int i = 1; i < txtDesde.Text.Length; i++) { if (txtDesde.Text.Substring(i, 1) == "0") { retorno = i; } else { ++retorno; break; } } nroCodigoBarrasDesde = txtDesde.Text.Substring(0, 1) + txtDesde.Text.Substring(retorno); } else { nroCodigoBarrasDesde = txtDesde.Text; } if (!int.TryParse(txtHasta.Text.Substring(0, 1), out retorno)) { for (int i = 1; i < txtHasta.Text.Length; i++) { if (txtHasta.Text.Substring(i, 1) == "0") { retorno = i; } else { ++retorno; break; } } nroCodigoBarrasHasta = txtHasta.Text.Substring(0, 1) + txtHasta.Text.Substring(retorno); } else { nroCodigoBarrasHasta = txtHasta.Text; } IRangoCodigoBarras rangoCodigoBarras = RangoCodigoBarrasFactory.GetRangoCodigoBarras(); rangoCodigoBarras.CodigoBarrasInicial = nroCodigoBarrasDesde; rangoCodigoBarras.CodigoBarrasFinal = nroCodigoBarrasHasta; // rangoCodigoBarras.CodigoBarrasInicial = this.txtDesde.Text; //rangoCodigoBarras.CodigoBarrasFinal = this.txtHasta.Text; rangoCodigoBarras.EstadoCodigoBarrasID = (int)NegociosSisPackInterface.SisPack.EstadoCodigoBarras.Disponible; rangoCodigoBarras.UsuarioID = usuario.UsuarioID; rangoCodigoBarras.ModalidadEntregaID = Utiles.Validaciones.obtieneEntero(this.txtModalidadEntregaSelec.Text); if (this.radioUV.Checked) // selecciono la unidad de venta { rangoCodigoBarras.UnidadVentaID = Utiles.Validaciones.obtieneEntero(this.txtServicioSelec.Text); rangoCodigoBarras.ServicioID = 0; rangoCodigoBarras.ConceptoFacturacionID = 0; } else if (this.radioServicio.Checked) { rangoCodigoBarras.UnidadVentaID = 0; rangoCodigoBarras.ServicioID = Utiles.Validaciones.obtieneEntero(this.ddlServicios.SelectedValue); rangoCodigoBarras.ConceptoFacturacionID = 0; } else { rangoCodigoBarras.UnidadVentaID = 0; rangoCodigoBarras.ServicioID = 0; rangoCodigoBarras.ConceptoFacturacionID = Utiles.Validaciones.obtieneEntero(this.ddlConcepto.SelectedValue); } //verifica si el rango es menor a 50 FQuiroga 28/06/2017 DsCodigosBarras ds = null; CodigoBarras codigoBarras = new CodigoBarras(); ds = codigoBarras.GetCodigoBarrasByRango(nroCodigoBarrasDesde, nroCodigoBarrasHasta, 0); //0=cualquier estado if (ds.Datos.Count > 50) { throw new Exception("Cantidad de Códigos de Barra excedida, máximo 50"); } else { rangoCodigoBarras.Guardar(); } Page.RegisterStartupScript("muestraMensaje", SisPackController.GenerarJavaScripts.MostrarMensaje("Los datos han sido guardados con éxito.", "AsignacionCodigoBarras.aspx")); } catch (Exception ex) { string mensaje = ex.Message; try { mensaje = this.TraducirTexto(ex.Message); if (mensaje == "" || mensaje == null) { mensaje = ex.Message; } } catch (Exception) { mensaje = ex.Message; } ((ErrorWeb)this.phErrores.Controls[0]).setMensaje(mensaje); } }