private void RecalendarizarProductoSwitch(object parametro)
        {
            var detalle = SelectedOrden_Compra_Detalles.First(f => f.ID_ALMACEN == SelectedOrden_Compra_Detalle.ID_ALMACEN && f.ID_PRODUCTO == SelectedOrden_Compra_Detalle.ID_PRODUCTO &&
                                                              f.ID_ORDEN_COMPRA == SelectedOrden_Compra_Detalle.ID_ORDEN_COMPRA);

            switch (parametro.ToString())
            {
            case "ok":

                detalle.INCIDENCIA_TIPO          = SelectedIncidencia_Tipo;
                detalle.INCIDENCIA_OBSERVACIONES = Observacion_Incidencia;
                if (tipoAccionPopUp == TipoAccionesPopUp.IncidenciaRecalendarizar)
                {
                    detalle.FechaRecalendarizacion = FechaRecalidarizarProductoRechazado;
                    detalle.Estatus = "RL";
                }
                else
                {
                    SelectedOrden_Compra_Detalle.Estatus = "CA";
                }
                PopUpsViewModels.ClosePopUp(PopUpsViewModels.TipoPopUp.RECHAZO_PRODUCTO);
                PopUpsViewModels.ShowPopUp(this, PopUpsViewModels.TipoPopUp.AGENDA);
                setAgendarProductos();
                break;

            case "cancelado":
                PopUpsViewModels.ClosePopUp(PopUpsViewModels.TipoPopUp.RECHAZO_PRODUCTO);
                SelectedIncidencia_Tipo             = null;
                Observacion_Incidencia              = string.Empty;
                FechaRecalidarizarProductoRechazado = null;
                setAgendarProductos();
                PopUpsViewModels.ShowPopUp(this, PopUpsViewModels.TipoPopUp.AGENDA);
                break;
            }
        }
        private async Task BorrarAgenda()
        {
            var _error = false;

            try
            {
                PopUpsViewModels.ClosePopUp(PopUpsViewModels.TipoPopUp.AGENDA);
                if (await _dialogCoordinator.ShowMessageAsync(this, "Confirmación", String.Format("¿Esta seguro de eliminar la agenda del dia {0}?", String.Format("{0:M/d/yyyy}", FechaAgenda)), MessageDialogStyle.AffirmativeAndNegative) == MessageDialogResult.Affirmative)
                {
                    var agenda         = new List <EXT_CALENDARIZAR_ENTREGA>();
                    var datos_globales = SelectedOrden_Compra_Detalles.Select(s => new
                    {
                        ID_ALMACEN      = s.ID_ALMACEN,
                        ID_ORDEN_COMPRA = s.ID_ORDEN_COMPRA
                    }).Distinct();
                    foreach (var item in datos_globales)
                    {
                        var detalle_agenda = new List <EXT_CALENDARIZAR_ENTREGA_PRODUCTO>();
                        foreach (var item_detalle in SelectedOrden_Compra_Detalles.Where(w => w.ID_ORDEN_COMPRA == item.ID_ORDEN_COMPRA &&
                                                                                         w.ID_ALMACEN == item.ID_ALMACEN))
                        {
                            detalle_agenda.Add(new EXT_CALENDARIZAR_ENTREGA_PRODUCTO
                            {
                                CANTIDAD    = item_detalle.PROGRAMADO.Value,
                                ID_PRODUCTO = item_detalle.ID_PRODUCTO,
                                IsEditable  = item_detalle.IsEditable
                            });
                        }
                        agenda.Add(new EXT_CALENDARIZAR_ENTREGA
                        {
                            FEC_PACTADA     = FechaAgenda.Value,
                            FECHA           = DateTime.Now,
                            ID_ALMACEN      = item.ID_ALMACEN,
                            ID_ENTRADA      = null,
                            ID_ORDEN_COMPRA = item.ID_ORDEN_COMPRA,
                            ID_USUARIO      = _usuario.Username,
                            CALENDARIZAR_ENTREGA_PRODUCTO = detalle_agenda,
                            ESTATUS = "PR"
                        });
                    }
                    new cCalendarizar_Entrega().EliminarporFecha(agenda);
                    await _dialogCoordinator.ShowMessageAsync(this, "Notificacion", "Se elimino la unidad de medida con exito");
                }
                else
                {
                    PopUpsViewModels.ShowPopUp(this, PopUpsViewModels.TipoPopUp.AGENDA);
                }
            }
            catch (Exception ex)
            { _error = true; };
            if (_error)
            {
                await _dialogCoordinator.ShowMessageAsync(this, "Error", "Ocurrió un error en la operacion. Favor de notificar al administrador");
            }
        }
 private void VerificarProgramados(object parametro)
 {
     IsProgramadosOK = !SelectedOrden_Compra_Detalles.Any(a => a.IS_PROGRAMADOVALID == false);
     if (SelectedOrden_Compra_Detalles.Any(a => a.IsEditable))
     {
         SalvarHabilitado = IsProgramadosOK;
     }
     else
     {
         SalvarHabilitado = false;
     }
 }
 private void SeleccionarOrden_Compra_Detalles()
 {
     foreach (var item in Ordenes_Compra_Detalle)
     {
         if (item.IS_SELECTED)
         {
             SelectedOrden_Compra_Detalles.Add(item);
         }
     }
     if (SelectedOrden_Compra_Detalles.Count > 0)
     {
         IsProductosAgendaVisible = true;
     }
 }
 private void SalvarAgenda()
 {
     try
     {
         var agenda         = new List <EXT_CALENDARIZAR_ENTREGA>();
         var datos_globales = SelectedOrden_Compra_Detalles.Select(s => new
         {
             ID_ALMACEN      = s.ID_ALMACEN,
             ID_ORDEN_COMPRA = s.ID_ORDEN_COMPRA
         }).Distinct();
         foreach (var item in datos_globales)
         {
             var detalle_agenda = new List <EXT_CALENDARIZAR_ENTREGA_PRODUCTO>();
             foreach (var item_detalle in SelectedOrden_Compra_Detalles.Where(w => w.ID_ORDEN_COMPRA == item.ID_ORDEN_COMPRA &&
                                                                              w.ID_ALMACEN == item.ID_ALMACEN))
             {
                 detalle_agenda.Add(new EXT_CALENDARIZAR_ENTREGA_PRODUCTO
                 {
                     CANTIDAD                 = item_detalle.PROGRAMADO.Value,
                     ID_PRODUCTO              = item_detalle.ID_PRODUCTO,
                     IsEditable               = item_detalle.IsEditable,
                     ESTATUS                  = item_detalle.Estatus,
                     FechaRecalendarizacion   = item_detalle.FechaRecalendarizacion,
                     INCIDENCIA_TIPO          = (item_detalle.INCIDENCIA_TIPO != null && item_detalle.INCIDENCIA_TIPO.ID_TIPO_INCIDENCIA != -1)?item_detalle.INCIDENCIA_TIPO:null,
                     INCIDENCIA_OBSERVACIONES = item_detalle.INCIDENCIA_OBSERVACIONES
                 });
             }
             agenda.Add(new EXT_CALENDARIZAR_ENTREGA
             {
                 FEC_PACTADA     = FechaAgenda.Value,
                 FECHA           = DateTime.Now,
                 ID_ALMACEN      = item.ID_ALMACEN,
                 ID_ENTRADA      = null,
                 ID_ORDEN_COMPRA = item.ID_ORDEN_COMPRA,
                 ID_USUARIO      = _usuario.Username,
                 CALENDARIZAR_ENTREGA_PRODUCTO = detalle_agenda,
                 ESTATUS = "PR"
             });
         }
         if (RealizarAccion == AccionSalvar.Salvar)
         {
             new cCalendarizar_Entrega().Insertar(agenda);
             AgregarFecha(FechaAgenda.Value);
             _dialogCoordinator.ShowMessageAsync(this, "Notificación", "Se inserto la calendarización con exito");
         }
         else if (RealizarAccion == AccionSalvar.Actualizar)
         {
             if (agenda.Count > 0)
             {
                 new cCalendarizar_Entrega().Actualizar(agenda, FechaAgendaOriginal.Value);
             }
             else
             {
                 new cCalendarizar_Entrega().EliminarporFecha(agenda);
             }
             _dialogCoordinator.ShowMessageAsync(this, "Notificación", "Se actualizo la calendarización con exito");
         }
     }catch (Exception ex)
     {
         _dialogCoordinator.ShowMessageAsync(this, "Error", "Hubo un error al salvar la agenda. Favor de contactar al administrador");
     }
 }
 private void CargarDetalleOrdenCompra(ORDEN_COMPRA orden_compra)
 {
     Ordenes_Compra_Detalle = new ObservableCollection <EXT_Orden_Compra_Detalle_Transito>(orden_compra.ORDEN_COMPRA_DETALLE.Where(w => w.ID_ALMACEN == SelectedAlmacen.ID_ALMACEN)
                                                                                           .Where(w => !SelectedOrden_Compra_Detalles.Any(a => a.ID_PRODUCTO == w.ID_PRODUCTO && a.ID_ALMACEN == w.ID_ALMACEN))
                                                                                           .Select(s => new EXT_Orden_Compra_Detalle_Transito {
         CANTIDAD_ENTREGADA  = s.CANTIDAD_ENTREGADA,
         CANTIDAD_ORDEN      = s.CANTIDAD_ORDEN,
         CANTIDAD_TRANSITO   = s.CANTIDAD_TRANSITO,
         DIFERENCIA          = s.DIFERENCIA,
         ID_ALMACEN          = s.ID_ALMACEN,
         ID_ORDEN_COMPRA     = s.ID_ORDEN_COMPRA,
         ID_ORDEN_COMPRA_DET = s.ID_ORDEN_COMPRA_DET,
         ID_PRODUCTO         = s.ID_PRODUCTO,
         IS_SELECTED         = false,
         PRECIO_COMPRA       = s.PRECIO_COMPRA,
         PRODUCTO_NOMBRE     = s.PRODUCTO.NOMBRE,
         PROVEEDOR_NOMBRE    = s.ORDEN_COMPRA.PROVEEDOR.NOMBRE,
         NUM_ORDEN           = s.ORDEN_COMPRA.NUM_ORDEN.Value
     }).ToList());
 }