Exemple #1
0
        public void Devolver(Documento documento,NotaCredito notaCredito, IList<DocumentoLinea> lineasDocumento,List<NotaIngresoSalidaLinea> lineasIngresosSalidas)
        {
            documento.TipoDocumento = "NotaCredito";
            new DocumentoBL().Grabar(documento);

            documento.NroDocumentoVenta = Int32.Parse(documento.Caja.Local.Id + "" + documento.Id);

            new DocumentoBL().Grabar(documento);

            foreach (DocumentoLinea documentoLinea in lineasDocumento)
            {
                documentoLinea.Documento = documento;
                new DocumentoLineaBL().Grabar(documentoLinea);
            }

            //MOVIMIENTO

            BE.Movimiento movimiento = new BE.Movimiento();
            movimiento.Local=documento.Caja.Local;
            movimiento.Fecha=DateTime.Today;

            new MovimientoBL().Grabar(movimiento);

               //GRABAMOS LA NOTA DE CREDITO

            notaCredito.Documento = documento;
            notaCredito.NroMovimiento = movimiento;

            Grabar(notaCredito);

            //CREAMOS LA NOTA DE INGRESOSALIDA

            NotaIngresoSalida notaIngSal=new NotaIngresoSalida();
            notaIngSal.Local=documento.Caja.Local;
            notaIngSal.Fecha=DateTime.Today;
            notaIngSal.NroMovimiento=movimiento;

            new NotaIngresoSalidaBL().Grabar(notaIngSal);

            foreach (NotaIngresoSalidaLinea linea in lineasIngresosSalidas)  linea.CodNota = notaIngSal;

            new NotaIngresoSalidaLineaBL().Grabar(lineasIngresosSalidas);
        }
 public void Save(NotaIngresoSalida nota)
 {
     ISession hisession = null;
     try
     {
         hisession = NHibernateHelper.GetCurrentSession();
         hisession.BeginTransaction();
         hisession.Save(nota);
         hisession.Transaction.Commit();
         hisession.Close();
     }
     catch (Exception ex)
     {
         if (hisession != null)
         {
             if (hisession.IsOpen) { hisession.Close(); }
         }
         if (log.IsErrorEnabled)
         {
             log.Error("No se pudo registrar nota : " + ex.Message);
         }
     }
 }
 public void Grabar(NotaIngresoSalida nota)
 {
     new NotaIngresoSalidaDA().Save(nota);
 }
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            if (dgvProductos.RowCount == 0)
            {
                if (txtNroDocumento.Text.Equals(""))
                    Utils.Utils.Mensaje("Ingrese el documento asociado a la entrada de productos", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                else
                    Utils.Utils.Mensaje("Cargue los datos del documento ingresado", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            /* variables para generar la incidencia */
            bool hayIncidencia = false;
            string descripcionIncidencia = "";
            int cantidadArticulosDiferentes = 0;
            int cantidadDeltaTotal = 0;

            bool ok= true;
            /* Grabo movimiento */
            BE.Movimiento movEntrada = new BE.Movimiento();
            movEntrada.Local = this.local;
            movEntrada.Fecha = System.DateTime.Now;
            movEntrada.TipoMovimiento = "Ingreso";
            new MovimientoBL().Grabar(movEntrada);

            /* Grabo nota de ingreso */
            NotaIngresoSalida notaIngreso = new NotaIngresoSalida();
            notaIngreso.Fecha = System.DateTime.Now;
            notaIngreso.Local = this.local;
            notaIngreso.NroMovimiento = movEntrada;
            new NotaIngresoSalidaBL().Grabar(notaIngreso);

            /* Grabo el detalle de la nota de ingreso y verifico incidencias */
            List<NotaIngresoSalidaLinea> notaLineas = new List<NotaIngresoSalidaLinea>();
            foreach (DataGridViewRow fila in dgvProductos.Rows)
            {
                NotaIngresoSalidaLinea notaIngresoLinea = new NotaIngresoSalidaLinea();
                notaIngresoLinea.CodNota = notaIngreso;
                int cantIngresada = 0;
                if ((fila.Cells["cantIngresada"].Value!= null)
                    &&(int.TryParse(fila.Cells["cantIngresada"].Value.ToString(), out cantIngresada))
                    && int.Parse(fila.Cells["cantPedida"].Value.ToString()) >= cantIngresada)
                    notaIngresoLinea.Cantidad = cantIngresada;
                else
                {
                    ok = false;
                    fila.Cells["cantIngresada"].Style.BackColor = Color.RosyBrown;
                }
                if ((notaIngresoLinea.CodAnaquel = (Anaquel)fila.Cells["cboAnaquel"].Value) == null)
                {
                    ok = false;
                    fila.Cells["cboAnaquel"].Style.BackColor = Color.RosyBrown;
                }
                if (ok)
                {
                    notaLineas.Add(notaIngresoLinea);
                    if (int.Parse(fila.Cells["cantPedida"].Value.ToString()) != int.Parse(fila.Cells["cantIngresada"].Value.ToString()))
                    {
                        hayIncidencia = true;
                        descripcionIncidencia += fila.Cells["codigo"];
                        int diferencia = int.Parse(fila.Cells["cantPedida"].Value.ToString()) - int.Parse(fila.Cells["cantIngresada"].Value.ToString());
                        descripcionIncidencia += " " + diferencia.ToString() + " ";
                        cantidadArticulosDiferentes++;
                        cantidadDeltaTotal += diferencia;
                    }
                }
            }

            if (ok)
            {
                /* Agregar el articulo por local a la lista */
                int i = 0;
                if (ordenCompra != null)
                {
                    foreach (OrdenCompraLinea auxOCL in ordenCompra.OrdenCompraOrdenCompraLineafk)
                    {
                        ArticuloXLocal axl = new ArticuloXLocalBL().findArticuloXLocal(auxOCL.ArticuloXProveedor.Articulo.Id, local.Id);
                        if (axl != null) axl.Cantidad += notaLineas[i].Cantidad;
                        else
                        {
                            axl = new ArticuloXLocal();
                            axl.Local = this.local;
                            axl.Cantidad = notaLineas[i].Cantidad;
                            axl.Articulo = auxOCL.ArticuloXProveedor.Articulo;
                        }
                        new ArticuloXLocalBL().Actualizar(axl);
                        notaLineas[i].ArticuloXLocal = axl;
                        i++;
                    }

                }
                else if (consignacion != null)
                {
                    foreach (DocumentoConsignacionLinea auxConsigL in consignacion.DocumentoConsignacionDocumentoConsignacionLineafk)
                    {
                        ArticuloXLocal axl = new ArticuloXLocalBL().findArticuloXLocal(auxConsigL.ArticuloXProveedor.Articulo.Id, local.Id);
                        if (axl != null) axl.Cantidad += notaLineas[i].Cantidad;
                        else
                        {
                            axl = new ArticuloXLocal();
                            axl.Local = this.local;
                            axl.Cantidad = notaLineas[i].Cantidad;
                            axl.Articulo = auxConsigL.ArticuloXProveedor.Articulo;
                        }
                        new ArticuloXLocalBL().Actualizar(axl);
                        notaLineas[i].ArticuloXLocal = axl;
                        i++;
                    }
                }
                else if (transferencia != null)
                {
                    foreach (TransferenciaLinea auxTransfL in transferencia.TransferenciaTransferenciaLineafk)
                    {
                        ArticuloXLocal axl = new ArticuloXLocalBL().findArticuloXLocal(auxTransfL.ArticuloXLocal.Articulo.Id, local.Id);
                        if (axl != null) axl.Cantidad += notaLineas[i].Cantidad;
                        else
                        {
                            axl = new ArticuloXLocal();
                            axl.Local = this.local;
                            axl.Cantidad = notaLineas[i].Cantidad;
                            axl.Articulo = auxTransfL.ArticuloXLocal.Articulo;
                        }
                        new ArticuloXLocalBL().Actualizar(axl);
                        notaLineas[i].ArticuloXLocal = axl;
                        i++;
                    }
                }

                if (hayIncidencia)
                {
                    //Ingresar incidencia
                    Incidencia incidencia = new Incidencia();
                    incidencia.DescripcionAdicional = descripcionIncidencia + " - AUTO - Ingreso de articulos por " + cboTipoMovimiento.Text + " inconsistente con documento nro. " + txtNroDocumento.Text;
                    incidencia.Estado = "Creada";
                    incidencia.Fecha = DateTime.Now;
                    incidencia.Local = this.local;
                    incidencia.TipoIncidencia = "Recepción";
                    incidencia.NroMovimiento = movEntrada;

                    //creacion de objetos incidencialinea
                    IncidenciaLinea incidlinea1 = new IncidenciaLinea();
                    IncidenciaLinea incidlinea2 = new IncidenciaLinea();
                    //Cantidad de articulos diferentes
                    incidlinea1.Cantidad = cantidadArticulosDiferentes;
                    incidlinea1.NroIncidencia = incidencia;
                    //cantidad total de arituclos dañados
                    incidlinea2.Cantidad = cantidadDeltaTotal;
                    incidlinea2.NroIncidencia = incidencia;

                    //GRABAR MOVIMIENTO E INCIDENCIA
                    //new MovimientoBL().Grabar(movEntrada);
                    //new NotaIngresoSalidaBL().Grabar(notaIngreso);
                    new IncidenciaBL().Grabar(incidencia);
                    new IncidenciaLineaBL().Grabar(incidlinea1);
                    new IncidenciaLineaBL().Grabar(incidlinea2);

                }
                new NotaIngresoSalidaLineaBL().Grabar(notaLineas);
                Utils.Utils.Mensaje("Se han registrado los productos ingresados", MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.Dispose();
            }
            else Utils.Utils.Error(this, "Ha ocurrido un error en la grabación");
        }
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow fila in dgvDocumentos.Rows)
            {
            /*creo movimiento*/
                BE.Movimiento movSalida = new BE.Movimiento();
                movSalida.Local = this.local;
                movSalida.Fecha = System.DateTime.Now;
                movSalida.TipoMovimiento = "Salida";
                new MovimientoBL().Grabar(movSalida);

            /* creo nota de salida */
                NotaIngresoSalida notaSalida = new NotaIngresoSalida();
                notaSalida.NroMovimiento = movSalida;
                notaSalida.Local = this.local;
                notaSalida.Fecha = System.DateTime.Now;
                new NotaIngresoSalidaBL().Grabar(notaSalida);

            /* creo guia de remisión */
                GuiaRemision guiaRemision = new GuiaRemision();
                guiaRemision.Fecha = System.DateTime.Now;
                guiaRemision.NroMovimiento = movSalida;
                guiaRemision.TipoGuia = "Salida";
                guiaRemision.Estado = "Emitida";
                new GuiaRemisionBL().Grabar(guiaRemision);

                if (fila.Cells["TipoMovimiento"].Value.ToString().Equals("Transferencia"))
                {
                    List<NotaIngresoSalidaLinea> notaSalidaLineas = new List<NotaIngresoSalidaLinea>();
                    List<GuiaRemisionLinea> guiaRemisionLineas = new List<GuiaRemisionLinea>();
                    int nroDocumento = int.Parse(fila.Cells["NroDocumento"].Value.ToString());
                    Transferencia t = new TransferenciaBL().cargarTransferencia(nroDocumento);
                    foreach (TransferenciaLinea tl in t.TransferenciaTransferenciaLineafk)
                    {
                        NotaIngresoSalidaLinea auxL = new NotaIngresoSalidaLinea();
                        auxL.ArticuloXLocal = tl.ArticuloXLocal;
                        auxL.Cantidad = tl.CantidadArticulosAprob;
                        auxL.CodNota = notaSalida;
                        notaSalidaLineas.Add(auxL);
                        GuiaRemisionLinea auxGuiaRemLinea = new GuiaRemisionLinea();
                        auxGuiaRemLinea.Articulo = tl.ArticuloXLocal.Articulo;
                        auxGuiaRemLinea.Cantidad = tl.CantidadArticulosAprob;
                        auxGuiaRemLinea.NroGuia = guiaRemision;
                        guiaRemisionLineas.Add(auxGuiaRemLinea);
                        ArticuloXLocal axl = auxL.ArticuloXLocal;
                        axl.Cantidad = axl.Cantidad - auxL.Cantidad;
                        new ArticuloXLocalBL().Actualizar(axl);
                    }
                    new NotaIngresoSalidaLineaBL().Grabar(notaSalidaLineas);
                    new GuiaRemisionBL().Grabar(guiaRemisionLineas);
                    Utils.Utils.Mensaje("Usted ha registrado satisfactoriamente la salida de productos. "
                                        + "\nNota de Salida asociada: " + notaSalida.Id.ToString()
                                        + "\nGuia de Remisión asociada: " + guiaRemision.Id,
                                        MessageBoxButtons.OK, Utils.Utils.REGISTRO_OK);
                    this.Dispose();
                }
                else
                {//Devolucion al proveedor
                    List<NotaIngresoSalidaLinea> notaSalidaLineas = new List<NotaIngresoSalidaLinea>();
                    int nroDocumento = int.Parse(fila.Cells["nroDocumento"].ToString());
                    Incidencia devolucion = new IncidenciaBL().cargarIncidencia(nroDocumento);
                    List<GuiaRemisionLinea> guiaRemisionLineas = new List<GuiaRemisionLinea>();
                    List<object[]> listaDatosDevolucion = new IncidenciaBL().GetListaDatosDevolucion(devolucion, local);
                    /* es una lista de duplas: cantidadArticulo - articuloXLocal */

                    foreach (object[] dupla in listaDatosDevolucion)
                    {
                        NotaIngresoSalidaLinea auxL = new NotaIngresoSalidaLinea();
                        auxL.ArticuloXLocal = (ArticuloXLocal)dupla[1];
                        auxL.Cantidad = (int)dupla[0];
                        auxL.CodNota = notaSalida;
                        notaSalidaLineas.Add(auxL);
                        GuiaRemisionLinea auxGuiaRemLinea = new GuiaRemisionLinea();
                        auxGuiaRemLinea.Articulo = ((ArticuloXLocal)dupla[1]).Articulo;
                        auxGuiaRemLinea.Cantidad = (int)dupla[0];
                        auxGuiaRemLinea.NroGuia = guiaRemision;
                        guiaRemisionLineas.Add(auxGuiaRemLinea);
                        ArticuloXLocal axl = auxL.ArticuloXLocal;
                        axl.Cantidad = axl.Cantidad - auxL.Cantidad;
                        new ArticuloXLocalBL().Actualizar(axl);
                    }
                    new NotaIngresoSalidaLineaBL().Grabar(notaSalidaLineas);
                    new GuiaRemisionBL().Grabar(guiaRemisionLineas);
                    Utils.Utils.Mensaje("Usted ha registrado satisfactoriamente la salida de productos. "
                                        + "\nNota de Salida asociada: " + notaSalida.Id.ToString()
                                        + "\nGuia de Remisión asociada: " + guiaRemision.Id,
                                        MessageBoxButtons.OK, Utils.Utils.REGISTRO_OK);
                    this.Dispose();
                }
            }
        }
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            bool ok= true;
            /* Grabo movimiento */
            Movimiento movEntrada = new Movimiento();
            movEntrada.Local = this.local;
            movEntrada.Fecha = System.DateTime.Now;
            new MovimientoBL().Grabar(movEntrada);

            /* Grabo nota de ingreso */
            NotaIngresoSalida notaIngreso = new NotaIngresoSalida();
            notaIngreso.Fecha = System.DateTime.Now;
            notaIngreso.Local = this.local;
            notaIngreso.NroMovimiento = movEntrada;
            new NotaIngresoSalidaBL().Grabar(notaIngreso);

            /* Grabo el detalle de la nota de ingreso y verifico incidencias */
            List<NotaIngresoSalidaLinea> notaLineas = new List<NotaIngresoSalidaLinea>();
            foreach (DataGridViewRow fila in dgvProductos.Rows)
            {
                NotaIngresoSalidaLinea notaIngresoLinea = new NotaIngresoSalidaLinea();
                notaIngresoLinea.CodNota = notaIngreso;
                int cantIngresada = 0;
                if ((fila.Cells["cantIngresada"].Value!= null)&&(int.TryParse(fila.Cells["cantIngresada"].Value.ToString(), out cantIngresada)))
                    notaIngresoLinea.Cantidad = cantIngresada;
                else
                {
                    ok = false;
                    fila.Cells["cantIngresada"].Style.BackColor = Color.RosyBrown;
                }
                if ((notaIngresoLinea.CodAnaquel = (Anaquel)fila.Cells["cboAnaquel"].Value) == null)
                {
                    ok = false;
                    fila.Cells["cboAnaquel"].Style.BackColor = Color.RosyBrown;
                }
                if (ok)
                {
                    notaLineas.Add(notaIngresoLinea);
                    if (int.Parse(fila.Cells["cantPedida"].Value.ToString()) != int.Parse(fila.Cells["cantIngresada"].Value.ToString()))
                    {
                        //Ingresar incidencia
                        Incidencia incidencia = new Incidencia();
                        incidencia.DescripcionAdicional = "AUTO - Ingreso de articulos por "+ cboTipoMovimiento.Text +  " inconsistente con documento nro. " + txtNroDocumento.Text;
                        incidencia.Estado = "CREADA";
                        incidencia.Fecha = DateTime.Today;
                        incidencia.Local = this.local;
                        incidencia.TipoIncidencia = "RECEPCION";
                        incidencia.NroMovimiento = movEntrada;
                        new IncidenciaBL().Grabar(incidencia);
                    }
                }
            }

            if (ok)
            {
                /* Agregar el articulo por local a la lista */
                int i = 0;
                foreach (OrdenCompraLinea auxOCL in ordenCompra.OrdenCompraOrdenCompraLineafk)
                {
                    ArticuloXLocal axl = new ArticuloXLocalBL().findArticuloXLocal(auxOCL.ArticuloXProveedor.Articulo.Id, local.Id);
                    if (axl != null) axl.Cantidad += notaLineas[i].Cantidad;
                    else
                    {
                        axl = new ArticuloXLocal();
                        axl.Local = this.local;
                        axl.Cantidad = notaLineas[i].Cantidad;
                        axl.Articulo = auxOCL.ArticuloXProveedor.Articulo;
                    }
                    new ArticuloXLocalBL().Actualizar(axl);
                    notaLineas[i].ArticuloXLocal = axl;
                    i++;
                }

                new NotaIngresoSalidaLineaBL().Grabar(notaLineas);
                Utils.Utils.Mensaje("Se han registrado los productos ingresados", MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.Dispose();
            }
            else Utils.Utils.Error(this, "Ha ocurrido un error en la grabación");
        }