Esempio n. 1
0
        public void salidaAlmacen(double totalExistencia, List <Presentacion> presentaciones, Int32 lIdDocumento, Salida_almacen salida, string codigoAlmacen)
        {
            bool success = true;

            if (totalExistencia >= Convert.ToDouble(txtCantidad.Text))
            {
                int    cont                  = 0;
                double resultado             = 0;
                double cantidadSalidaContpaq = 0;
                foreach (var pExistente in presentaciones)
                {
                    cont++;
                    if (cont == 1)
                    {
                        resultado = Double.Parse(Convert.ToString(pExistente.existencia)) - Double.Parse(txtCantidad.Text);
                    }
                    else
                    {
                        resultado = Double.Parse(Convert.ToString(pExistente.existencia)) - resultado;
                    }
                    if (resultado < 0)
                    {
                        if (pExistente.existencia > 0)
                        {
                            success = movimientoAlmacen(pExistente, lIdDocumento, Double.Parse(Convert.ToString(pExistente.existencia)), codigoAlmacen);
                        }
                        resultado             = resultado * -1;
                        pExistente.existencia = 0;
                        cantidadSalidaContpaq = resultado;
                        pExistente.modificar(pExistente);
                    }
                    else
                    {
                        pExistente.existencia = resultado;

                        if (cont == 1)
                        {
                            success = movimientoAlmacen(pExistente, lIdDocumento, Double.Parse(txtCantidad.Text), codigoAlmacen);
                        }
                        else
                        {
                            success = movimientoAlmacen(pExistente, lIdDocumento, cantidadSalidaContpaq, codigoAlmacen);
                        }

                        pExistente.modificar(pExistente);
                        break;
                    }
                }

                if (success == true)
                {
                    salida.registrar(salida);
                    MessageBox.Show("SE REGISTRO LA SALIDA DE: " + salida.cantidad + " " + unidad.nombre + " \nDEL INSUMO: " + cbxInsumo.SelectedItem.ToString() + "\nPOR LA RAZÓN: " + salida.descripcion, "AVISO SHARK");
                }
            }
            else
            {
                MessageBox.Show("LA CANTIDAD QUE DESEA MARCAR COMO SALIDA ES MAYOR AL NÚMERO DE EXISTENCIA EN SU ALMACÉN");
            }
        }
Esempio n. 2
0
        private void btnguardarMovimiento_ItemClick(object sender, DevExpress.Xpf.Bars.ItemClickEventArgs e)
        {
            if (cbxMovimiento.SelectedItem != null)
            {
                Tipo_movimiento tipo         = new Tipo_movimiento();
                Presentacion    presentacion = new Presentacion();
                Salida_almacen  salida       = new Salida_almacen();
                Insumo          _insumo      = insumo.obtener(cbxInsumo.SelectedItem.ToString());


                double        totalExistencia = 0;
                double        folio           = 0;
                StringBuilder serie           = new StringBuilder(12);

                salida.cantidad        = Double.Parse(txtCantidad.Text);
                salida.Insumo          = _insumo;
                salida.Tipo_movimiento = tipo.obtener(cbxMovimiento.SelectedItem.ToString());
                salida.descripcion     = txtDescripcion.Text;


                if (cbxAlamcenAfectado.SelectedItem != null)
                {
                    salida.Almacen = almacen.obtener(cbxAlamcenAfectado.SelectedItem.ToString());
                }
                else if (cbxAOrigen.SelectedItem != null)
                {
                    salida.Almacen = almacen.obtener(cbxAOrigen.SelectedItem.ToString());
                }
                List <Presentacion> presentaciones = presentacion.obtenerPorInsumoAlmacen(salida.Insumo.id, salida.Almacen.id);
                foreach (var item in presentaciones)
                {
                    totalExistencia += Double.Parse(Convert.ToString(item.existencia));
                }
                if (cbxMovimiento.SelectedItem.ToString() == "SALIDA")
                {
                    //sdk
                    SDK.fSiguienteFolio("35", serie, ref folio);
                    Int32 lIdDocumento = crearDocumento("35", folio);

                    if (cbxAlamcenAfectado.SelectedItem != null && cbxInsumo.SelectedItem != null && !String.IsNullOrEmpty(txtCantidad.Text) && !String.IsNullOrEmpty(txtDescripcion.Text))
                    {
                        //proceso para una salida de almacen
                        salidaAlmacen(totalExistencia, presentaciones, lIdDocumento, salida, salida.Almacen.codigo);
                    }

                    clearFields();
                }
                else
                {
                    SDK.fSiguienteFolio("35", serie, ref folio);

                    if (cbxPresentaciones.SelectedItem != null && cbxInsumo.SelectedItem != null && cbxAOrigen.SelectedItem != null)
                    {
                        if (totalExistencia >= Convert.ToDouble(txtCantidad.Text))
                        {
                            salida.descripcion = tipo.nombre;
                            Int32 lIdDocumentoSalida = crearDocumento("35", folio);

                            salidaAlmacen(totalExistencia, presentaciones, lIdDocumentoSalida, salida, salida.Almacen.codigo);

                            if (salida.id > 0)
                            {
                                SDK.fSiguienteFolio("34", serie, ref folio);

                                EntradaPresentacion entrada = new EntradaPresentacion();
                                DateTime            thisDay = DateTime.Today;
                                entrada.fecha_registro = Convert.ToDateTime(thisDay.ToString());
                                entrada.Presentacion   = presentacion.get(cbxPresentaciones.SelectedItem.ToString());
                                entrada.Almacen        = almacen.obtener(cbxADestino.SelectedItem.ToString());
                                entrada.cantidad       = Double.Parse(txtCantidad.Text);

                                Int32 lIdDocumentoEntrada = crearDocumento("34", folio);

                                if (movimientoAlmacen(entrada.Presentacion, lIdDocumentoEntrada, Double.Parse(txtCantidad.Text), entrada.Almacen.codigo) == true)
                                {
                                    entrada.registrar(entrada);
                                    MessageBox.Show("SE TRASPASÓ: " + txtCantidad.Text + " " + unidad.nombre + "\nDEL INSUMO: " + _insumo.descripcion + "\nDEL ALMACÉN: " + cbxAOrigen.SelectedItem.ToString() + "\nAL ALMACÉN: " + cbxADestino.SelectedItem.ToString());
                                    clearFields();
                                }
                            }
                        }
                        else
                        {
                            MessageBox.Show("LA CANTIDAD QUE DESEA MARCAR COMO SALIDA ES MAYOR AL NÚMERO DE EXISTENCIA EN SU ALMACÉN");
                        }
                    }
                }
            }
            else
            {
                MessageBox.Show("Es Necesario especificar el tipo de movimiento que desea hacer");
            }
        }