示例#1
0
        protected void btnGrabarTarjAlta_Click(object sender, System.EventArgs e)
        {
            string prefijoInventario;
            int    numeroInventario;


            if (ddlInventarios.SelectedValue.Split('-').Length == 3)
            {
                prefijoInventario = (ddlInventarios.SelectedValue.Split('-'))[0] + "-" + (ddlInventarios.SelectedValue.Split('-'))[1];
                numeroInventario  = Convert.ToInt32((ddlInventarios.SelectedValue.Split('-'))[2]);
            }
            else
            {
                prefijoInventario = (ddlInventarios.SelectedValue.Split('-'))[0];
                numeroInventario  = Convert.ToInt32((ddlInventarios.SelectedValue.Split('-'))[1].Trim());
            }



            string lineaInventario        = ddlLineaTarjAlta.SelectedValue.Split('-')[1];
            int    numeroTarjeta          = -1;
            int    codigoUbicacionInicial = Convert.ToInt32(ddlUbicacionAlta.SelectedValue);
            string almacen              = ddlAlmacenAlta.SelectedValue;
            int    conteoAlta           = Convert.ToInt32(tbConteoAlta.Text);
            string codigoItemModificado = tbCodRefAlta.Text;

            if (!VerificarCodigoReferencia(lineaInventario, tbCodRefAlta.Text))
            {
                Utils.MostrarAlerta(Response, "- El código de ítem ingresado es invalido");
                return;
            }

            if (hdNumTarjAlta.Value != "-1")
            {
                try{ numeroTarjeta = Convert.ToInt32(hdNumTarjAlta.Value); }

                catch { Utils.MostrarAlerta(Response, "- Número de tarjeta de alta invalido"); return; }
            }

            #region Código candidato a eliminación

            /*
             * if(!VerificarUsoTarjetaAlta(prefijoInventario,numeroInventario,numeroTarjeta))
             * {
             *      Page.RegisterClientScriptBlock("status","<script>alert('- Esta Tarjeta de alta ya fue utilizada o es un número invalido');</script>");
             *      return;
             * }
             */
            #endregion

            string codI = "";

            Referencias.Guardar(codigoItemModificado, ref codI, lineaInventario);

            ItemsInventarioFisico itemsInventarioFisico = new ItemsInventarioFisico(
                codI,
                Items.NombreReferencia(codI),
                2,
                numeroTarjeta,
                codigoUbicacionInicial,
                almacen,
                0,
                //		SaldoItem.ObtenerCantidadActual(codI,ConfiguracionInventario.Ano), si es ALTA el saldo en libros debe ser CERO
                SaldoItem.ObtenerCostoPromedio(codI, ConfiguracionInventario.Ano),
                conteoAlta,
                conteoAlta,
                -1,
                DateTime.Now,
                new DateTime(),
                string.Empty,
                string.Empty,
                conteoAlta,
                conteoAlta * SaldoItem.ObtenerCostoPromedio(codI, ConfiguracionInventario.Ano),
                conteoAlta,
                codigoItemModificado);

            string salida = InventarioFisico.IngresarValorTarjetaAlta(prefijoInventario, numeroInventario, itemsInventarioFisico);

            if (salida == String.Empty)
            {
                Utils.MostrarAlerta(Response, "Se ha ingresado la información de la tarjeta de alta " + numeroTarjeta + "");
            }
            else
            {
                Utils.MostrarAlerta(Response, "" + salida + "");
            }

            CargarTarjetaConteoAlta(prefijoInventario, numeroInventario);

            ddlLineaTarjAlta.SelectedIndex = 0;
            tbCodRefAlta.Text            = tbConteoAlta.Text = String.Empty;
            ddlAlmacenAlta.SelectedIndex = 0;

            CargarUbicaciones(ddlUbicacionAlta, ddlAlmacenAlta);
        }
示例#2
0
        public static bool CrearRemision(
            string prefijoRemision,
            ref uint numeroRemision,
            string almacenOrigen,
            string almacenDestino,
            DataTable dtItems,
            string codVendedor,
            ref string processMsg,
            string observaciones)
        {
            bool status = true;

            string ano_cinv = DBFunctions.SingleData("SELECT pano_ano from cinventario");

            //Primero revisamos si existe algun registro en ditems que tenga como documento de respaldo con este numero
            bool existe = true;

            while (existe)
            {
                if (DBFunctions.RecordExist("SELECT * FROM ditems WHERE pdoc_codigo='" + prefijoRemision + "' AND dite_numedocu=" + numeroRemision.ToString() + ""))
                {
                    numeroRemision += 1;
                }
                else
                {
                    existe = false;
                }
            }

            //Creamos el objeto manejador de los movimientos de kardex con el constructor #3
            Movimiento Mov = new Movimiento(prefijoRemision, numeroRemision, 40, DBFunctions.SingleData("SELECT mnit_nit FROM cempresa"), DateTime.Now, codVendedor, DBFunctions.SingleData("SELECT tvend_codigo FROM pvendedor WHERE pven_codigo='" + codVendedor + "'"), "", "N");

            Mov.Observaciones = observaciones;

            for (int i = 0; i < dtItems.Rows.Count; i++)
            {
                //En primer lugar se debe recalcular que tanto se puede asignar
                //Es probable que otro proceso halla modificado las cantidades

                //double ca = Referencias.ConsultarDisponibilidad(dtItems.Rows[i][0].ToString(),almacenOrigen,(int)Convert.ToDouble(dtItems.Rows[i][5]));
                double ca = Referencias.ConsultarDisponibilidad(dtItems.Rows[i]["CODIGOORIGINAL"].ToString(), almacenOrigen, 0);
                double cantidadDevolver = 0;

                try
                {
                    cantidadDevolver = Convert.ToDouble(dtItems.Rows[i]["CANTIDADTRANSLADO"]);
                }
                catch { }

                if (ca > 0 && (ca - cantidadDevolver) >= 0)
                {
                    #region Salida de Almacén

                    double costoPromedio                    = 0;
                    double costoPromedioHistorico           = 0;
                    double costoPromedioAlmacen             = 0;
                    double costoPromedioHistoricoAlmacen    = 0;
                    double cantidadInicialInventario        = 0;
                    double cantidadInicialInventarioAlmacen = 0;

                    costoPromedio                    = SaldoItem.ObtenerCostoPromedio(dtItems.Rows[i]["CODIGOORIGINAL"].ToString(), ano_cinv);
                    costoPromedioHistorico           = SaldoItem.ObtenerCostoPromedioHistorico(dtItems.Rows[i]["CODIGOORIGINAL"].ToString(), ano_cinv);
                    costoPromedioAlmacen             = SaldoItem.ObtenerCostoPromedioAlmacen(dtItems.Rows[i]["CODIGOORIGINAL"].ToString(), ano_cinv, almacenOrigen);
                    costoPromedioHistoricoAlmacen    = SaldoItem.ObtenerCostoPromedioHistoricoAlmacen(dtItems.Rows[i]["CODIGOORIGINAL"].ToString(), ano_cinv, almacenOrigen);
                    cantidadInicialInventario        = SaldoItem.ObtenerCantidadActual(dtItems.Rows[i]["CODIGOORIGINAL"].ToString(), ano_cinv);
                    cantidadInicialInventarioAlmacen = SaldoItem.ObtenerCantidadActualAlmacen(dtItems.Rows[i]["CODIGOORIGINAL"].ToString(), ano_cinv, almacenOrigen);

                    //Ahora creamos este registro de salida del almacen de origen, en este caso la cantidad se hace negativa
                    Mov.InsertaFila(
                        dtItems.Rows[i]["CODIGOORIGINAL"].ToString(),
                        cantidadDevolver * (-1),
                        Convert.ToDouble(dtItems.Rows[i]["COSTOPROMEDIOORIGEN"]),
                        costoPromedio,
                        costoPromedioAlmacen,
                        0,
                        0,
                        0,
                        costoPromedioHistorico,
                        costoPromedioHistoricoAlmacen,
                        Convert.ToDouble(dtItems.Rows[i]["COSTOPROMEDIOORIGEN"]),
                        cantidadInicialInventario,
                        cantidadInicialInventarioAlmacen,
                        almacenOrigen);
                    #endregion

                    #region Entrada de Almacén
                    //Ahora creamos el registro de entrada del almacén de destino, en este caso la cantidad se hace negativa

                    costoPromedio          = SaldoItem.ObtenerCostoPromedio(dtItems.Rows[i]["CODIGOORIGINAL"].ToString(), ano_cinv);
                    costoPromedioHistorico = SaldoItem.ObtenerCostoPromedioHistorico(dtItems.Rows[i]["CODIGOORIGINAL"].ToString(), ano_cinv);
                    costoPromedioAlmacen   = Movimiento.CalcularCostoPromedio(
                        cantidadDevolver,
                        SaldoItem.ObtenerCostoPromedioAlmacen(dtItems.Rows[i]["CODIGOORIGINAL"].ToString(), ano_cinv, almacenOrigen),
                        SaldoItem.ObtenerCantidadActualAlmacen(dtItems.Rows[i]["CODIGOORIGINAL"].ToString(), ano_cinv, almacenDestino),
                        SaldoItem.ObtenerCostoPromedioAlmacen(dtItems.Rows[i]["CODIGOORIGINAL"].ToString(), ano_cinv, almacenDestino),
                        0);
                    costoPromedioHistoricoAlmacen = Movimiento.CalcularCostoPromedio(
                        cantidadDevolver,
                        SaldoItem.ObtenerCostoPromedioAlmacen(dtItems.Rows[i]["CODIGOORIGINAL"].ToString(), ano_cinv, almacenOrigen),
                        SaldoItem.ObtenerCantidadActualAlmacen(dtItems.Rows[i]["CODIGOORIGINAL"].ToString(), ano_cinv, almacenDestino),
                        SaldoItem.ObtenerCostoPromedioHistoricoAlmacen(dtItems.Rows[i]["CODIGOORIGINAL"].ToString(), ano_cinv, almacenDestino),
                        0);
                    cantidadInicialInventario        = SaldoItem.ObtenerCantidadActual(dtItems.Rows[i]["CODIGOORIGINAL"].ToString(), ano_cinv);
                    cantidadInicialInventarioAlmacen = SaldoItem.ObtenerCantidadActualAlmacen(dtItems.Rows[i]["CODIGOORIGINAL"].ToString(), ano_cinv, almacenDestino);

                    Mov.InsertaFila(
                        dtItems.Rows[i]["CODIGOORIGINAL"].ToString(),
                        cantidadDevolver,
                        Convert.ToDouble(dtItems.Rows[i]["COSTOPROMEDIOORIGEN"]),
                        costoPromedio,
                        costoPromedioAlmacen,
                        0,
                        0,
                        0,
                        costoPromedioHistorico,
                        costoPromedioHistoricoAlmacen,
                        Convert.ToDouble(dtItems.Rows[i]["COSTOPROMEDIOORIGEN"]),
                        cantidadInicialInventario,
                        cantidadInicialInventarioAlmacen,
                        almacenDestino);
                    #endregion
                }
            }

            //Ahora guardamos el registro de Movimientos
            if (Mov.RealizarMov(true))
            {
                processMsg += "<br>Bien <br>" + Mov.ProcessMsg;
                DBFunctions.NonQuery("UPDATE pdocumento SET pdoc_ultidocu=" + numeroRemision.ToString() + " WHERE pdoc_codigo='" + prefijoRemision + "'");
            }
            else
            {
                status      = false;
                processMsg += "<br>ERROR <br>" + Mov.ProcessMsg;
            }

            return(status);
        }