public void Pedido_Registrar(int idEmpresa, int codigoUsuario, PedidoCabBE objPedidoCabBE, List <PedidoDetBE> lstProductos, List <GlosaBE> lstImpuestos, decimal?idOperacion, string password, decimal limiteCredito) { ////using (dmIntranetDataContext dci = new dmIntranetDataContext(ConfigurationManager.ConnectionStrings["genesys"].ConnectionString)) using (dmIntranetDataContext dci = new dmIntranetDataContext(GS.configuration.Init.GetValue(Constant.sistema, Constant.key, "genesys"))) { ////dmGenesysDataContext dcg = new dmGenesysDataContext(string.Format(ConfigurationManager.ConnectionStrings[dci.Empresa.SingleOrDefault(x => x.idEmpresa == idEmpresa).baseDatos].ConnectionString, "usrGEN" + (10000 + codigoUsuario).ToString().Substring(1, 4))); dmGenesysDataContext dcg = new dmGenesysDataContext(string.Format(GS.configuration.Init.GetValue(Constant.sistema, Constant.key, dci.Empresa.SingleOrDefault(x => x.idEmpresa == idEmpresa).baseDatos), "usrGEN" + (10000 + codigoUsuario).ToString().Substring(1, 4))); try { //Desaorueba para que se pueda editar if (idOperacion != null && dcg.OV.ToList().Find(x => x.Op == idOperacion).Aprobacion1&& objPedidoCabBE.IdPago != 2 && limiteCredito >= objPedidoCabBE.Total) { dcg.VBG01076("OV", idOperacion, codigoUsuario, "1"); } dcg.VBG00522(ref idOperacion, objPedidoCabBE.IdAgenda, objPedidoCabBE.NroRegistro, objPedidoCabBE.FechaOrden, objPedidoCabBE.FechaDespacho, objPedidoCabBE.FechaEntrega, objPedidoCabBE.FechaVigencia, objPedidoCabBE.Fecha, objPedidoCabBE.FechaVencimiento, objPedidoCabBE.IdEnvio, objPedidoCabBE.IdAgenciaAnexoReferencia, objPedidoCabBE.IdVendedor, objPedidoCabBE.IdMoneda, objPedidoCabBE.Neto, objPedidoCabBE.Descuento, objPedidoCabBE.Subtotal, objPedidoCabBE.Impuestos, objPedidoCabBE.Total, objPedidoCabBE.Observaciones, objPedidoCabBE.Prioridad, objPedidoCabBE.EntregaParcial, objPedidoCabBE.Estado, objPedidoCabBE.IdPago, objPedidoCabBE.IdAgenciaAnexo, objPedidoCabBE.TEA, objPedidoCabBE.IdAgenciaDireccion1, objPedidoCabBE.IdAgenciaDireccion2, objPedidoCabBE.ModoPago, objPedidoCabBE.NotasDespacho, objPedidoCabBE.IdCondicionCredito, objPedidoCabBE.NroOrdenCliente, objPedidoCabBE.IdNaturalezaGasto, objPedidoCabBE.IdAgendaOrigen, objPedidoCabBE.IdSucursalOrigen, objPedidoCabBE.IdReferenciaOrigen, objPedidoCabBE.IdDireccionOrigen, objPedidoCabBE.IdAgendaDestino, objPedidoCabBE.IdSucursalDestino, objPedidoCabBE.IdReferenciaDestino, objPedidoCabBE.IdDireccionDestino, objPedidoCabBE.IdTipoDespacho, objPedidoCabBE.IdTipoPedido, objPedidoCabBE.IdDocumentoVenta, objPedidoCabBE.IdAlmacen, objPedidoCabBE.IdTransportista, objPedidoCabBE.IdChofer, objPedidoCabBE.IdVehiculo1, objPedidoCabBE.IdVehiculo2, objPedidoCabBE.IdVehiculo3, objPedidoCabBE.HoraAtencionOpcional1_Desde, objPedidoCabBE.HoraAtencionOpcional1_Hasta, objPedidoCabBE.HoraAtencionOpcional2_Desde, objPedidoCabBE.HoraAtencionOpcional2_Hasta, objPedidoCabBE.HoraAtencionOpcional3_Desde, objPedidoCabBE.HoraAtencionOpcional3_Hasta, objPedidoCabBE.IdSede, objPedidoCabBE.IdContacto); if (idOperacion == null) { throw new ArgumentException("No se pudo registrar el pedido, revisar los campos obligatorios."); } dcg.VBG00523(idOperacion); foreach (PedidoDetBE objPedidoDetBE in lstProductos) { decimal?idAmarre = null; if (objPedidoDetBE.IdAmarre > 0) { idAmarre = objPedidoDetBE.IdAmarre; } if (objPedidoDetBE.Estado) { dcg.VBG00525(ref idAmarre, idOperacion, objPedidoDetBE.TablaOrigen, objPedidoDetBE.Linea, objPedidoDetBE.ID_Item, objPedidoDetBE.ID_ItemPedido, objPedidoDetBE.Item_ID, objPedidoDetBE.Cantidad, objPedidoDetBE.Precio, objPedidoDetBE.Dcto, objPedidoDetBE.DctoValor, objPedidoDetBE.Importe, objPedidoDetBE.ID_ItemAnexo, objPedidoDetBE.ID_CCosto, objPedidoDetBE.ID_UnidadGestion, objPedidoDetBE.ID_UnidadProyecto, objPedidoDetBE.ID_UnidadInv, objPedidoDetBE.FactorUnidadInv, objPedidoDetBE.CantidadUnidadInv, objPedidoDetBE.ID_UnidadDoc, objPedidoDetBE.CantidadUnidadDoc, objPedidoDetBE.Observaciones); } else { dcg.VBG00526(idAmarre); } } foreach (GlosaBE objImpuesto in lstImpuestos) { dcg.VBG00524(idOperacion, objImpuesto.IdGlosa, objImpuesto.BaseImponible, objImpuesto.Importe); } dcg.VBG04091(idOperacion); if (limiteCredito >= objPedidoCabBE.Total) { //Aprobar el pedido if (objPedidoCabBE.IdPago != 2) { dcg.VBG01076("OV", idOperacion, codigoUsuario, "1"); } // string moneda = null; decimal?total = null; bool? ok = false; if (objPedidoCabBE.NroRegistro == "0" || objPedidoCabBE.NroRegistro == null) { dcg.VBG00045(idOperacion, ref moneda, ref total, ref ok, null); //Seleccionar impresora VBG00038Result objImpresora = dcg.VBG00038(52).ToList()[0]; //Actualizar impresora string nombreImpresora = null; decimal?idDocumento = null; string nombreDocumento = null; string serieLetra = null; decimal?serieNumero = null; decimal?numero = null; int? lenLetrasSerie = null; int? lenNumeroSerie = null; int? lenNumero = null; decimal?cantidad = null; string archivoRpt = null; decimal?longitud = null; decimal?ancho = null; dcg.VBG00037(objImpresora.ID_Impresora, ref nombreImpresora, ref idDocumento, ref nombreDocumento, ref serieLetra, ref serieNumero, ref numero, ref lenLetrasSerie, ref lenNumeroSerie, ref lenNumero, ref cantidad, ref archivoRpt, ref longitud, ref ancho); decimal?idImpresora = objImpresora.ID_Impresora; dcg.VBG00036(ref idImpresora, nombreImpresora, idDocumento, serieLetra, serieNumero, numero + 1, lenLetrasSerie, lenNumeroSerie, lenNumero, cantidad - 1); dcg.VBG00040(4, idOperacion, Math.Round((Math.Pow(10, Convert.ToDouble(lenNumeroSerie)) + Convert.ToDouble(serieNumero)), 0).ToString().Substring(1, Convert.ToInt32(lenNumeroSerie)), numero + 1); } } } catch (Exception ex) { dci.Excepcion_Registrar(ex.Message, ex.TargetSite.Name); throw new ArgumentException("No se pudo registrar el pedido en la base de datos."); } finally { dcg.SubmitChanges(); dci.SubmitChanges(); dcg.Connection.Close(); dci.Connection.Close(); } } }
public decimal OrdenVenta_Registrar(int idEmpresa, int codigoUsuario, gsOV_BuscarCabeceraResult objOrdenVentaCabBE, List <gsOV_BuscarDetalleResult> lstProductos, List <GlosaBE> lstImpuestos, decimal?idOperacion, decimal limiteCredito, List <gsPedidos_FechasLetrasSelectResult> ListaFechas) { using (dmIntranetDataContext dci = new dmIntranetDataContext(GS.configuration.Init.GetValue(Constant.sistema, Constant.key, "genesys"))) { dmGenesysDataContext dcg = new dmGenesysDataContext(string.Format(GS.configuration.Init.GetValue(Constant.sistema, Constant.key, dci.Empresa.SingleOrDefault(x => x.idEmpresa == idEmpresa).baseDatos), "usrGEN" + (10000 + codigoUsuario).ToString().Substring(1, 4))); VBG00004Result objEmpresa; try { objEmpresa = dcg.VBG00004().Single(); using (TransactionScope scope = new TransactionScope()) { //Desaorueba para que se pueda editar if (idOperacion != null && dcg.OV.ToList().Find(x => x.Op == idOperacion).Aprobacion1&& objOrdenVentaCabBE.Id_Pago != 2 && (limiteCredito >= objOrdenVentaCabBE.Total || !objEmpresa.EvaluaLimCredito)) { dcg.VBG01076("OV", idOperacion, 1, "1"); } if (objOrdenVentaCabBE.ID_CondicionCredito == 0 && objOrdenVentaCabBE.Id_Pago == 1) { throw new ArgumentException("No se puede registrar el pedido, se está procesando un pedido con Tipo de Venta: Crédito y Tipo Credito: Contado, presione F5 para refrescar el formulario"); } dcg.VBG00522(ref idOperacion, objOrdenVentaCabBE.ID_Agenda, objOrdenVentaCabBE.NoRegistro, objOrdenVentaCabBE.FechaOrden, objOrdenVentaCabBE.FechaDespacho, objOrdenVentaCabBE.FechaEntrega, objOrdenVentaCabBE.FechaVigencia, objOrdenVentaCabBE.FechaEmision, objOrdenVentaCabBE.FechaVencimiento, objOrdenVentaCabBE.ID_Envio, objOrdenVentaCabBE.ID_AgendaAnexoReferencia, objOrdenVentaCabBE.ID_Vendedor, objOrdenVentaCabBE.ID_Moneda, objOrdenVentaCabBE.Neto, objOrdenVentaCabBE.Dcto, objOrdenVentaCabBE.SubTotal, objOrdenVentaCabBE.Impuestos, objOrdenVentaCabBE.Total, objOrdenVentaCabBE.Observaciones, objOrdenVentaCabBE.Prioridad, objOrdenVentaCabBE.EntregaParcial, objOrdenVentaCabBE.Estado, objOrdenVentaCabBE.Id_Pago, objOrdenVentaCabBE.ID_AgendaAnexo, objOrdenVentaCabBE.TEA, objOrdenVentaCabBE.ID_AgendaDireccion, objOrdenVentaCabBE.ID_AgendaDireccion2, objOrdenVentaCabBE.ModoPago, objOrdenVentaCabBE.NotasDespacho, objOrdenVentaCabBE.ID_CondicionCredito, objOrdenVentaCabBE.NroOrdenCliente, objOrdenVentaCabBE.ID_NaturalezaGastoIngreso, objOrdenVentaCabBE.ID_AgendaOrigen, objOrdenVentaCabBE.DireccionOrigenSucursal, objOrdenVentaCabBE.DireccionOrigenReferencia, objOrdenVentaCabBE.DireccionOrigenDireccion, objOrdenVentaCabBE.ID_AgendaDestino, objOrdenVentaCabBE.DireccionDestinoSucursal, objOrdenVentaCabBE.DireccionDestinoReferencia, objOrdenVentaCabBE.DireccionDestinoDireccion, objOrdenVentaCabBE.ID_TipoDespacho, objOrdenVentaCabBE.ID_TipoPedido, objOrdenVentaCabBE.ID_DocumentoVenta, objOrdenVentaCabBE.ID_Almacen, objOrdenVentaCabBE.ID_Transportista, objOrdenVentaCabBE.ID_Chofer, objOrdenVentaCabBE.ID_Vehiculo1, objOrdenVentaCabBE.ID_Vehiculo2, objOrdenVentaCabBE.ID_Vehiculo3, objOrdenVentaCabBE.HoraAtencionOpcion1_Desde, objOrdenVentaCabBE.HoraAtencionOpcion1_Hasta, objOrdenVentaCabBE.HoraAtencionOpcion2_Desde, objOrdenVentaCabBE.HoraAtencionOpcion2_Hasta, objOrdenVentaCabBE.HoraAtencionOpcion3_Desde, objOrdenVentaCabBE.HoraAtencionOpcion3_Hasta, objOrdenVentaCabBE.ID_Sede, objOrdenVentaCabBE.Contacto); if (idOperacion == null) { throw new ArgumentException("No se pudo registrar el pedido, revisar los campos obligatorios."); } dcg.VBG00523(idOperacion); foreach (gsOV_BuscarDetalleResult objProducto in lstProductos) { decimal?idAmarre = null; if (objProducto.ID_Amarre > 0) { idAmarre = objProducto.ID_Amarre; } if (objProducto.Estado != 0) { dcg.VBG00525(ref idAmarre, idOperacion, objProducto.TablaOrigen, objProducto.Linea, objProducto.ID_Item, objProducto.ID_ItemPedido, objProducto.Item_ID, objProducto.Cantidad, objProducto.Precio, objProducto.Dcto, objProducto.DctoValor, objProducto.Importe, objProducto.ID_ItemAnexo, objProducto.ID_CCosto, objProducto.ID_UnidadGestion, objProducto.ID_UnidadProyecto, objProducto.ID_UnidadInv, objProducto.FactorUnidadInv, objProducto.CantidadUnidadInv, objProducto.ID_UnidadDoc, objProducto.CantidadUnidadDoc, objProducto.Observaciones); } else { if (objProducto.ID_Amarre > 0) { dcg.VBG00526(idAmarre); } } } foreach (GlosaBE objImpuesto in lstImpuestos) { dcg.VBG00524(idOperacion, objImpuesto.IdGlosa, objImpuesto.BaseImponible, objImpuesto.Importe); } dcg.VBG04091(idOperacion); if (limiteCredito >= objOrdenVentaCabBE.Total || !objEmpresa.EvaluaLimCredito) { //Aprobar el pedido if (objOrdenVentaCabBE.Id_Pago != 2) { dcg.VBG01076("OV", idOperacion, 1, "1"); } string moneda = null; decimal?total = null; bool? ok = false; if (objOrdenVentaCabBE.NoRegistro == "0" || objOrdenVentaCabBE.NoRegistro == null) { dcg.VBG00045(idOperacion, ref moneda, ref total, ref ok, null); //Seleccionar impresora VBG00038Result objImpresora = dcg.VBG00038(52).ToList()[0]; //Actualizar impresora string nombreImpresora = null; decimal?idDocumento = null; string nombreDocumento = null; string serieLetra = null; decimal?serieNumero = null; decimal?numero = null; int? lenLetrasSerie = null; int? lenNumeroSerie = null; int? lenNumero = null; decimal?cantidad = null; string archivoRpt = null; decimal?largo = null; decimal?ancho = null; dcg.VBG00037(objImpresora.ID_Impresora, ref nombreImpresora, ref idDocumento, ref nombreDocumento, ref serieLetra, ref serieNumero, ref numero, ref lenLetrasSerie, ref lenNumeroSerie, ref lenNumero, ref cantidad, ref archivoRpt, ref largo, ref ancho); decimal?idImpresora = objImpresora.ID_Impresora; dcg.VBG00036(ref idImpresora, nombreImpresora, idDocumento, serieLetra, serieNumero, numero + 1, lenLetrasSerie, lenNumeroSerie, lenNumero, cantidad - 1); dcg.VBG00040(4, idOperacion, Math.Round((Math.Pow(10, Convert.ToDouble(lenNumeroSerie)) + Convert.ToDouble(serieNumero)), 0).ToString().Substring(1, Convert.ToInt32(lenNumeroSerie)), numero + 1); } //if (lstProductos.FindAll(x => x.Stock - x.Cantidad < 0 && x.Estado == 1 && x.Item_ID != KardexFlete).Count > 0 && objOrdenVentaCabBE.Id_Pago != 2) //{ // dcg.VBG01076("OV", idOperacion, 1, "1"); //} //--------------Actualizar Fecha Letras dcg.gsProcesoLetras_EliminarTotal((int)idOperacion, codigoUsuario); gsProcesoLetras_RegistrarResult objProceso = new gsProcesoLetras_RegistrarResult(); gsProcesoLetras_Registrar_OLDResult objProcesoOLD = new gsProcesoLetras_Registrar_OLDResult(); if (ListaFechas != null) { if (ListaFechas.Count() > 0) { int ID_PROCESO = 0; int ID_PROCESO_OLD = 0; objProceso = dcg.gsProcesoLetras_Registrar(0, codigoUsuario).Single(); objProcesoOLD = dcg.gsProcesoLetras_Registrar_OLD(0, codigoUsuario).Single(); ID_PROCESO = (int)objProceso.Column1; ID_PROCESO_OLD = (int)objProcesoOLD.Column1; dcg.gsProcesoLetrasDetalle_Registrar(ID_PROCESO, (int)idOperacion, 0); dcg.gsProcesoLetrasDetalle_Registrar_OLD(ID_PROCESO_OLD, (int)idOperacion, 0); foreach (gsPedidos_FechasLetrasSelectResult objFecha in ListaFechas.OrderBy(x => x.Fecha)) { dcg.gsPedidos_FechasLetrasInsert(ID_PROCESO_OLD, objFecha.Fecha, codigoUsuario); dcg.gsFactura_FechasLetrasInsert(ID_PROCESO, objFecha.Fecha, 0, codigoUsuario); } } } //------------------------------------------------------- } dcg.SubmitChanges(); scope.Complete(); dcg.Connection.Close(); return((decimal)idOperacion); } } catch (Exception ex) { dci.Excepcion_Registrar(ex.Message, ex.TargetSite.Name); dci.SubmitChanges(); throw new ArgumentException("No se pudo registrar el pedido en la base de datos."); } finally { dcg.Connection.Close(); } } }