Example #1
0
        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();
                }
            }
        }
Example #2
0
        private void AgregarVentaServicio(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;

            Padre.OrdenTrabajo.OrdenesServicios.Add(ordenServicio);

            MostrarTotales();
        }
Example #3
0
 private void ServiciosAgregadosDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
 {
     try
     {
         if (ServiciosAgregadosDataGridView.Columns["EliminarOS"].Index == e.ColumnIndex)
         {
             Entities.OrdenesServicios os = (Entities.OrdenesServicios)ServiciosAgregadosDataGridView.Rows[e.RowIndex].DataBoundItem;
             EliminarOrdenServicio(os);
         } // End if
     }
     catch (Exception ex)
     {
         AppHelper.Error(ex.Message);
     }
 }
Example #4
0
        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();
        }
Example #5
0
 private void EliminarOrdenServicio(Entities.OrdenesServicios os)
 {
     Padre.OrdenTrabajo.OrdenesServicios.Remove(os);
     MostrarTotales();
 }
Example #6
0
        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();
        }