private void SaveRecibo2()
        {
            ReciboDataMapper rdm = new ReciboDataMapper();

            rdm.udpateElement(new RECIBO()
            {
                UNID_SOLICITANTE = this.SelectedSolicitante.UnidSolicitante,
                PO          = this.PO,
                UNID_RECIBO = this.UnidRecibo
            }, this.ActualUser);

            rdm.LimpiarRecibo(this._DelMovs, this.UnidRecibo);

            foreach (InventoryApp.Model.Recibo.MovimientoModel mov in this.Movimientos)
            {
                //Agregar movimiento
                DAL.POCOS.MOVIMENTO movimiento = new MOVIMENTO()
                {
                    UNID_MOVIMIENTO = mov.UnidMovimiento
                    ,
                    FECHA_MOVIMIENTO = mov.FechaCaptura
                    ,
                    UNID_ALMACEN_DESTINO = (mov.DestinoAlmacen != null) ? mov.DestinoAlmacen.UnidAlmacen : (long?)null
                    ,
                    UNID_ALMACEN_PROCEDENCIA = (mov.OrigenAlmacen != null) ? mov.OrigenAlmacen.UnidAlmacen : (long?)null
                    ,
                    UNID_CLIENTE_PROCEDENCIA = (mov.OrigenCliente != null) ? mov.OrigenCliente.UnidCliente : (long?)null
                    ,
                    UNID_PROVEEDOR_PROCEDENCIA = (mov.OrigenProveedor != null) ? mov.OrigenProveedor.UnidProveedor : (long?)null
                    ,
                    TT = this.TroubleTicket
                    ,
                    UNID_TIPO_MOVIMIENTO = MovimientoRecibo
                    ,
                    IS_ACTIVE = true
                    ,
                    FINISHED = true
                };
                MovimientoDataMapper movDataMapper = new MovimientoDataMapper();
                movDataMapper.udpateElementRecibo(movimiento);

                foreach (InventoryApp.Model.Recibo.ReciboItemModel item in mov.Items)
                {
                    long?aux = null;
                    if (item.ItemStatus != null)
                    {
                        aux = item.ItemStatus.UnidItemStatus;
                    }

                    //Agregar el item
                    DAL.POCOS.ITEM pItem = new DAL.POCOS.ITEM()
                    {
                        UNID_ITEM = item.UnidItem
                        ,
                        SKU = item.Sku
                        ,
                        NUMERO_SERIE = item.NumeroSerie
                        ,
                        UNID_ITEM_STATUS = aux
                        ,
                        COSTO_UNITARIO = item.CostoUnitario
                        ,
                        UNID_FACTURA_DETALE = item.FacturaDetalle.UnidFacturaCompraDetalle
                        ,
                        UNID_ARTICULO = item.Articulo.UnidArticulo
                        ,
                        PEDIMENTO_EXPO = item.PedimentoExpo
                        ,
                        PEDIMENTO_IMPO = item.PedimentoImpo
                        ,
                        CANTIDAD = item.Cantidad
                        ,
                        IS_ACTIVE = true
                    };
                    ItemDataMapper itemDataMapper = new ItemDataMapper();
                    itemDataMapper.updateElementRecibo(pItem);

                    //Agregar detalle del movimiento
                    DAL.POCOS.MOVIMIENTO_DETALLE movDetalle = new DAL.POCOS.MOVIMIENTO_DETALLE()
                    {
                        UNID_MOVIMIENTO = mov.UnidMovimiento
                        ,
                        UNID_ITEM = item.UnidItem
                        ,
                        UNID_MOVIMIENTO_DETALLE = item.UnidMovimientoDetalle
                        ,
                        CANTIDAD = item.Cantidad
                        ,
                        UNID_ITEM_STATUS = item.ItemStatus.UnidItemStatus
                        ,
                        IS_ACTIVE = true
                    };
                    MovimientoDetalleDataMapper mdDataMapper = new MovimientoDetalleDataMapper();
                    mdDataMapper.udpateElementRecibo(movDetalle);

                    //Actualizar el último movimiento
                    DAL.POCOS.ULTIMO_MOVIMIENTO ulitmoMovto = new DAL.POCOS.ULTIMO_MOVIMIENTO()
                    {
                        UNID_ITEM               = item.UnidItem,
                        UNID_ALMACEN            = mov.DestinoAlmacen.UnidAlmacen,
                        UNID_MOVIMIENTO_DETALLE = item.UnidMovimientoDetalle,
                        CANTIDAD         = item.Cantidad,
                        UNID_ITEM_STATUS = item.ItemStatus.UnidItemStatus,
                        IS_ACTIVE        = true
                    };
                    UltimoMovimientoDataMapper umDataMapper = new UltimoMovimientoDataMapper();
                    umDataMapper.udpateElement(ulitmoMovto);
                }

                //Agregar recibodetalle
                DAL.POCOS.RECIBO_MOVIMIENTO rm = new DAL.POCOS.RECIBO_MOVIMIENTO()
                {
                    UNID_RECIBO            = this._UnidRecibo,
                    UNID_RECIBO_MOVIMIENTO = mov.UnidMovimiento,
                    UNID_MOVIMIENTO        = mov.UnidMovimiento,
                    UNID_FACTURA           = mov.Items.First().FacturaDetalle.Factura.UnidFactura,
                    IS_ACTIVE = true
                };
                ReciboMovimientoDataMapper rmDataMaper = new ReciboMovimientoDataMapper();
                rmDataMaper.udpateElementRecibo(rm);
            }
        }
        private void AttemptAddMovimientoCmd()
        {
            LoteModel lot = new LoteModel(new LoteDataMapper());

            lot.UnidLote = UNID.getNewUNID();
            lot.UnidPOM  = UNID.getNewUNID();
            lot.saveLote();
            //factura
            foreach (FacturaCompraModel item in this.Facturas)
            {
                item.UnidLote    = lot.UnidLote;
                item.UnidFactura = UNID.getNewUNID();
                item.saveFactura();
                //factura detalle
                foreach (FacturaCompraDetalleModel fac in item.FacturaDetalle)
                {
                    fac.Factura = item;
                    fac.saveFacturaDetalle();
                }
            }

            //Agregar recibo
            DAL.POCOS.RECIBO recibo = new DAL.POCOS.RECIBO()
            {
                UNID_RECIBO      = this.UnidRecibo,
                FECHA_CREACION   = this.FechaCreacion,
                TT               = this.TroubleTicket,
                PO               = this.PO,
                UNID_SOLICITANTE = (this.SelectedSolicitante.UnidSolicitante == 0) ? (long?)null : this.SelectedSolicitante.UnidSolicitante
            };
            ReciboDataMapper reciboDataMapper = new ReciboDataMapper();

            reciboDataMapper.insertElement(recibo, this.ActualUser);


            foreach (InventoryApp.Model.Recibo.MovimientoModel mov in this.Movimientos)
            {
                //Agregar movimiento
                DAL.POCOS.MOVIMENTO movimiento = new MOVIMENTO()
                {
                    UNID_MOVIMIENTO = mov.UnidMovimiento
                    ,
                    FECHA_MOVIMIENTO = mov.FechaCaptura
                    ,
                    UNID_ALMACEN_DESTINO = (mov.DestinoAlmacen != null) ? mov.DestinoAlmacen.UnidAlmacen : (long?)null
                    ,
                    UNID_ALMACEN_PROCEDENCIA = (mov.OrigenAlmacen != null) ? mov.OrigenAlmacen.UnidAlmacen : (long?)null
                    ,
                    UNID_CLIENTE_PROCEDENCIA = (mov.OrigenCliente != null) ? mov.OrigenCliente.UnidCliente : (long?)null
                    ,
                    UNID_PROVEEDOR_PROCEDENCIA = (mov.OrigenProveedor != null) ? mov.OrigenProveedor.UnidProveedor : (long?)null
                    ,
                    TT = this.TroubleTicket
                    ,
                    UNID_TIPO_MOVIMIENTO = MovimientoRecibo
                };
                MovimientoDataMapper movDataMapper = new MovimientoDataMapper();
                movDataMapper.insertElement(movimiento);

                foreach (InventoryApp.Model.Recibo.ReciboItemModel item in mov.Items)
                {
                    long?aux = null;
                    if (item.ItemStatus != null)
                    {
                        aux = item.ItemStatus.UnidItemStatus;
                    }

                    //Agregar el item
                    DAL.POCOS.ITEM pItem = new DAL.POCOS.ITEM()
                    {
                        UNID_ITEM = item.UnidItem
                        ,
                        SKU = item.Sku
                        ,
                        NUMERO_SERIE = item.NumeroSerie
                        ,
                        UNID_ITEM_STATUS = aux
                        ,
                        COSTO_UNITARIO = item.CostoUnitario
                        ,
                        UNID_FACTURA_DETALE = item.FacturaDetalle.UnidFacturaCompraDetalle
                        ,
                        UNID_ARTICULO = item.Articulo.UnidArticulo
                        ,
                        PEDIMENTO_EXPO = item.PedimentoExpo
                        ,
                        PEDIMENTO_IMPO = item.PedimentoImpo
                        ,
                        CANTIDAD = item.Cantidad
                        ,
                        IS_ACTIVE = true
                    };
                    ItemDataMapper itemDataMapper = new ItemDataMapper();
                    itemDataMapper.insertElement(pItem);

                    //Agregar detalle del movimiento
                    DAL.POCOS.MOVIMIENTO_DETALLE movDetalle = new DAL.POCOS.MOVIMIENTO_DETALLE()
                    {
                        UNID_MOVIMIENTO = mov.UnidMovimiento
                        ,
                        UNID_ITEM = item.UnidItem
                        ,
                        UNID_MOVIMIENTO_DETALLE = item.UnidMovimientoDetalle
                        ,
                        CANTIDAD = item.Cantidad
                        ,
                        UNID_ITEM_STATUS = item.ItemStatus.UnidItemStatus
                        ,
                        IS_ACTIVE = true
                    };
                    MovimientoDetalleDataMapper mdDataMapper = new MovimientoDetalleDataMapper();
                    mdDataMapper.insertElement(movDetalle);

                    //Actualizar el último movimiento
                    DAL.POCOS.ULTIMO_MOVIMIENTO ulitmoMovto = new DAL.POCOS.ULTIMO_MOVIMIENTO()
                    {
                        UNID_ITEM               = item.UnidItem,
                        UNID_ALMACEN            = mov.DestinoAlmacen.UnidAlmacen,
                        UNID_MOVIMIENTO_DETALLE = item.UnidMovimientoDetalle,
                        CANTIDAD         = item.Cantidad,
                        UNID_ITEM_STATUS = item.ItemStatus.UnidItemStatus,
                        IS_ACTIVE        = false
                    };
                    UltimoMovimientoDataMapper umDataMapper = new UltimoMovimientoDataMapper();
                    umDataMapper.udpateElement(ulitmoMovto);
                }

                //Agregar recibodetalle
                DAL.POCOS.RECIBO_MOVIMIENTO rm = new DAL.POCOS.RECIBO_MOVIMIENTO()
                {
                    UNID_RECIBO            = this._UnidRecibo,
                    UNID_RECIBO_MOVIMIENTO = mov.UnidMovimiento,
                    UNID_MOVIMIENTO        = mov.UnidMovimiento,
                    UNID_FACTURA           = mov.Items.First().FacturaDetalle.Factura.UnidFactura
                };
                ReciboMovimientoDataMapper rmDataMaper = new ReciboMovimientoDataMapper();
                rmDataMaper.insertElement(rm);
            }

            if (this._CatalogReciboViewModel != null)
            {
                this._CatalogReciboViewModel.updateCollection();
            }
        }