private void RegistrarMovimiento() { DoValidate(); int PorSurtir = 0; foreach (Entities.Vista_OrdenesServiciosRefaccionesAlmacen vistaOSR in Vista_OSR) { PorSurtir += vistaOSR.Salida.Value; } if (PorSurtir == 0) { AppHelper.ThrowException( "La orden de trabajo {0} esta completamente surtida", this.OrdenTrabajo.OrdenTrabajo_ID); } NotaAlmacen = new Entities.NotasAlmacen(); MovimientoInventario = new Entities.MovimientosInventario(); // Insertar Nota Almacen NotaAlmacen.Fecha = DB.GetDate(); NotaAlmacen.OrdenTrabajo_ID = OrdenTrabajo.OrdenTrabajo_ID; NotaAlmacen.TipoMovimientoInventario_ID = 1; // O.T. NotaAlmacen.Usuario_ID = Sesion.Usuario_ID; NotaAlmacen.Empresa_ID = Sesion.Empresa_ID.Value; NotaAlmacen.Estacion_ID = Sesion.Estacion_ID.Value; NotaAlmacen.Create(); // Insertar Movimientos Inventario foreach (Entities.Vista_OrdenesServiciosRefaccionesAlmacen osr in Vista_OSR) { if (osr.Salida.Value > 0 && osr.CantidadInventario.Value >= osr.Salida.Value) { MovimientoInventario.Cantidad = osr.Salida.Value * -1; MovimientoInventario.CantidadPost = MovimientoInventario.CantidadPrev - osr.Salida.Value; MovimientoInventario.CostoUnitario = osr.CostoUnitario.Value; MovimientoInventario.Fecha = NotaAlmacen.Fecha; MovimientoInventario.NotaAlmacen_ID = NotaAlmacen.NotaAlmacen_ID; MovimientoInventario.OrdenTrabajo_ID = NotaAlmacen.OrdenTrabajo_ID; MovimientoInventario.Refaccion_ID = osr.Refaccion_ID.Value; MovimientoInventario.TipoMovimientoInventario_ID = NotaAlmacen.TipoMovimientoInventario_ID; MovimientoInventario.Usuario_ID = NotaAlmacen.Usuario_ID; MovimientoInventario.Valor = MovimientoInventario.Cantidad * MovimientoInventario.CostoUnitario; MovimientoInventario.Empresa_ID = Sesion.Empresa_ID.Value; MovimientoInventario.Estacion_ID = Sesion.Estacion_ID.Value; MovimientoInventario.Calculate(); MovimientoInventario.Create(); // Actualizar refaccion MovimientoInventario.UpdateRefaccion(false); // Actualizar compra Entities.OrdenesServiciosRefacciones OSR = Entities.OrdenesServiciosRefacciones.Read(osr.OrdenServicioRefaccion_ID.Value); OSR.RefSurtidas += osr.Salida; OSR.Update(); } } }
private void InsertOrden() { Padre.OrdenTrabajo.Empresa_ID = Sesion.Empresa_ID.Value; Padre.OrdenTrabajo.Estacion_ID = Sesion.Estacion_ID.Value; Padre.OrdenTrabajo.FechaAlta = DB.GetDate(); Padre.OrdenTrabajo.Usuario_ID = Sesion.Usuario_ID; Padre.OrdenTrabajo.EstatusOrdenTrabajo_ID = 1; Padre.OrdenTrabajo.CB_Activo = true; Padre.OrdenTrabajo.Create(); int i = 0, j = 0; for (i = 0; i < Padre.OrdenTrabajo.OrdenesServicios.Count; i++) { Entities.OrdenesServicios os = Padre.OrdenTrabajo.OrdenesServicios[i]; os.OrdenTrabajo_ID = Padre.OrdenTrabajo.OrdenTrabajo_ID; os.Fecha = Padre.OrdenTrabajo.FechaAlta; os.Create(); for (j = 0; j < os.OrdenesServiciosRefacciones.Count; j++) { Entities.OrdenesServiciosRefacciones osr = os.OrdenesServiciosRefacciones[j]; osr.OrdenServicio_ID = os.OrdenServicio_ID; osr.Create(); } } }
private void RefaccionesAgregadasDataGrdiView_CellContentClick(object sender, DataGridViewCellEventArgs e) { try { if (this.RefaccionesAgregadasDataGrdiView.Columns["EliminarRef"].Index == e.ColumnIndex) { Entities.OrdenesServiciosRefacciones osr = (Entities.OrdenesServiciosRefacciones)RefaccionesAgregadasDataGrdiView.Rows[e.RowIndex].DataBoundItem; EliminarOrdenServicioRefaccion(osr); } // End if } catch (Exception ex) { AppHelper.Error(ex.Message); } }
private void AgregarRefaccion(Entities.Vista_Refacciones refaccion, int cantidad) { // Verificar el inventario // Obtener el tipo de cliente Entities.OrdenesServiciosRefacciones osr = new Entities.OrdenesServiciosRefacciones(); osr.Cantidad = cantidad; osr.CostoUnitario = refaccion.CostoUnitario.Value; osr.PrecioUnitario = refaccion.PrecioInterno.Value; // Verificar osr.Refaccion_Descripcion = refaccion.Descripcion; osr.Refaccion_ID = refaccion.Refaccion_ID.Value; osr.RefSurtidas = 0; osr.Total = osr.PrecioUnitario * osr.Cantidad; this.Padre.OrdenTrabajo.OrdenesServicios[0].OrdenesServiciosRefacciones.Add(osr); MostrarTotales(); }
private void AgregarRefaccion(Entities.Vista_Refacciones refaccion, int cantidad) { /* Verificar el inventario * Consultamos el inventario existente de la refacción, así como la cantidad * por surtir. Si la cantidad restante no es suficente, enviaremos aviso */ int inventario = Entities.Functions.GetInventarioDiferido( refaccion.Refaccion_ID.Value, Sesion.Empresa_ID.Value, Sesion.Estacion_ID.Value ); if (inventario < cantidad) { throw new Exception("No hay inventario suficiente de la refacción (incluyendo refacciones por surtir)"); } // Obtener el tipo de cliente Entities.OrdenesServiciosRefacciones osr = new Entities.OrdenesServiciosRefacciones(); osr.Cantidad = cantidad; osr.CostoUnitario = refaccion.CostoUnitario.Value; osr.PrecioUnitario = refaccion.PrecioInterno.Value; // Verificar osr.Refaccion_Descripcion = refaccion.Descripcion; osr.Refaccion_ID = refaccion.Refaccion_ID.Value; osr.RefSurtidas = 0; osr.Total = osr.PrecioUnitario * osr.Cantidad; if (this.Padre.OrdenTrabajo.OrdenesServicios.Count == 0) { Entities.OrdenesServicios ordenServicio = new Entities.OrdenesServicios(); ordenServicio.Cantidad = 1; ordenServicio.EstatusOrdenServicio_ID = 1; ordenServicio.Precio = 0; ordenServicio.ServicioMantenimiento_ID = 872; ordenServicio.Total = 0; ordenServicio.ServicioMantenimiento_Descripcion = "VENTA DE REFACCIONES"; this.Padre.OrdenTrabajo.OrdenesServicios.Add(ordenServicio); } this.Padre.OrdenTrabajo.OrdenesServicios[0].OrdenesServiciosRefacciones.Add(osr); MostrarTotales(); }
private void EliminarOrdenServicioRefaccion(Entities.OrdenesServiciosRefacciones osr) { this.Padre.OrdenTrabajo.OrdenesServicios[0].OrdenesServiciosRefacciones.Remove(osr); MostrarTotales(); }
private void AgregarServicio(Entities.Vista_ServiciosMantenimientos vistaServicio, int cantidadServicios) { Entities.OrdenesServicios ordenServicio = new Entities.OrdenesServicios(); ordenServicio.Cantidad = cantidadServicios; ordenServicio.EstatusOrdenServicio_ID = 1; ordenServicio.Precio = vistaServicio.Precio; ordenServicio.ServicioMantenimiento_ID = vistaServicio.ServicioMantenimiento_ID; ordenServicio.Total = ordenServicio.Cantidad * ordenServicio.Precio; ordenServicio.ServicioMantenimiento_Descripcion = vistaServicio.Nombre; if (vistaServicio.Nombre == "VENTA DE REFACCIONES") { Padre.OrdenTrabajo.OrdenesServicios.Add(ordenServicio); MostrarTotales(); return; } // Consultar las refacciones que necesita el servicio List <Entities.ServiciosMantenimientos_TiposRefacciones> serviciosTiposRefacciones = Entities.ServiciosMantenimientos_TiposRefacciones.Read(ordenServicio.ServicioMantenimiento_ID); // Si no tiene configuradas refacciones if (serviciosTiposRefacciones.Count == 0) { throw new Exception("No hay refacciones asociadas con el servicio"); } // Obtener el modelo int?modeloUnidad_ID = DB.GetNullableInt32(this.Padre.Modelo_ID); bool ExisteInventario = false; // Para cada una, buscar en inventario, si hay existencia foreach (Entities.ServiciosMantenimientos_TiposRefacciones tipoRef in serviciosTiposRefacciones) { // Obtener las refacciones por tipo de servicio y modelo del auto List <Entities.Vista_Refacciones> refacciones = Entities.Vista_Refacciones.Get( null, tipoRef.TipoRefaccion_ID, null, modeloUnidad_ID, null, null, null, Sesion.Empresa_ID.Value, Sesion.Estacion_ID.Value ); foreach (Entities.Vista_Refacciones refaccion in refacciones) { // Si hay inventario int cantidad = tipoRef.Cantidad * ordenServicio.Cantidad; /* Verificar el inventario * Consultamos el inventario existente de la refacción, así como la cantidad * por surtir. Si la cantidad restante no es suficente, enviaremos aviso * */ int inventario = Entities.Functions.GetInventarioDiferido( refaccion.Refaccion_ID.Value, Sesion.Empresa_ID.Value, Sesion.Estacion_ID.Value ); // Si hay inventario suficiente if (inventario >= cantidad) { Entities.OrdenesServiciosRefacciones osr = new Entities.OrdenesServiciosRefacciones(); osr.Cantidad = cantidad; osr.CostoUnitario = refaccion.CostoUnitario.Value; // Aqui debe verificar si el precio es interno o externo if (this.TipoClienteTaller_ID == 1 || this.TipoClienteTaller_ID == 2 || this.TipoClienteTaller_ID == 3) { osr.PrecioUnitario = refaccion.PrecioInterno.Value; } else { osr.PrecioUnitario = refaccion.PrecioExterno.Value; } // Fin de verificación osr.Refaccion_ID = refaccion.Refaccion_ID.Value; osr.RefSurtidas = 0; osr.Total = osr.PrecioUnitario * osr.Cantidad; osr.Refaccion_Descripcion = refaccion.Descripcion; ordenServicio.OrdenesServiciosRefacciones.Add(osr); // Si hay inventario para la refacción ExisteInventario = true; // Salir del ciclo break; } // End if } // End foreach // Si no existe inventario if (!ExisteInventario) { // Obtener las refacciones por tipo de servicio y modelo del auto generico refacciones = Entities.Vista_Refacciones.Get( null, tipoRef.TipoRefaccion_ID, null, 9, null, null, null, Sesion.Empresa_ID.Value, Sesion.Estacion_ID.Value ); // Verificamos que existan refacciones if (refacciones.Count == 0) { Entities.TiposRefacciones tiporefaccion = Entities.TiposRefacciones.Read(tipoRef.TipoRefaccion_ID); Entities.Modelos modelo = Entities.Modelos.Read(modeloUnidad_ID.Value); AppHelper.ThrowException("No hay refacciones del tipo {0} y modelo {1}", tiporefaccion.Nombre, modelo.Nombre); } foreach (Entities.Vista_Refacciones refaccion in refacciones) { // Si hay inventario int cantidad = tipoRef.Cantidad * ordenServicio.Cantidad; /* Verificar el inventario * Consultamos el inventario existente de la refacción, así como la cantidad * por surtir. Si la cantidad restante no es suficente, enviaremos aviso * */ int inventario = Entities.Functions.GetInventarioDiferido( refaccion.Refaccion_ID.Value, Sesion.Empresa_ID.Value, Sesion.Estacion_ID.Value ); // Si hay inventario suficiente if (inventario >= cantidad) { // Agregamos las refacciones // a la orden de servicio Entities.OrdenesServiciosRefacciones osr = new Entities.OrdenesServiciosRefacciones(); osr.Cantidad = cantidad; osr.CostoUnitario = refaccion.CostoUnitario.Value; // Aqui debe verificar si el precio es interno o externo if (this.TipoClienteTaller_ID == 1 || this.TipoClienteTaller_ID == 2 || this.TipoClienteTaller_ID == 3) { osr.PrecioUnitario = refaccion.PrecioInterno.Value; } else { osr.PrecioUnitario = refaccion.PrecioExterno.Value; } // Fin de verificación osr.Refaccion_ID = refaccion.Refaccion_ID.Value; osr.RefSurtidas = 0; osr.Total = osr.PrecioUnitario * osr.Cantidad; osr.Refaccion_Descripcion = refaccion.Descripcion; ordenServicio.OrdenesServiciosRefacciones.Add(osr); // Si existe inventario ExisteInventario = true; // Salimos del ciclo break; } // End if } // End foreach } // End if // Si no hay inventario, ni siguiera con modelo genérico if (!ExisteInventario) { Entities.TiposRefacciones tiporefaccion = Entities.TiposRefacciones.Read(tipoRef.TipoRefaccion_ID); Entities.Modelos modelo = Entities.Modelos.Read(modeloUnidad_ID.Value); AppHelper.ThrowException("No hay refacciones del tipo {0} y modelo {1}", tiporefaccion.Nombre, modelo.Nombre); } ExisteInventario = false; continue; } // End foreach Padre.OrdenTrabajo.OrdenesServicios.Add(ordenServicio); MostrarTotales(); }