コード例 #1
0
        /// <summary>
        /// Adicionar articulo a la devolucion en proceso
        /// </summary>
        /// <param name="noInvoice"></param>
        /// <param name="article"></param>
        /// <param name="size"></param>
        /// <param name="customer"></param>
        public void addArticle(String noInvoice, String article, String size, String customer, string calidad)
        {
            /// Realizar la busqueda del articulo en la factura
            DataTable dtArticleInvoiced = Facturacion.searchArticleInvoice(noInvoice, article, size, customer, calidad);

            /// Verificar que existan datos ///
            if (dtArticleInvoiced != null && dtArticleInvoiced.Rows.Count > 0)
            {
                ///
                DataView dv = ((DataView)Session[_nameSessionArtsRet]);
                ///
                if (dv != null)
                {
                    DataRow drow = dtArticleInvoiced.Rows[0];
                    ///
                    DataRow newRow = dv.Table.NewRow();
                    ///
                    /// Número de factura ///
                    String noInvo = drow["idv_invoice"].ToString();
                    newRow["idv_invoice"] = noInvo;
                    ///
                    String art = drow["idv_article"].ToString();
                    newRow["idv_article"] = art;
                    /// Nombre Artículo ///
                    newRow["arv_name"] = drow["arv_name"].ToString();
                    ///
                    newRow["brv_description"] = drow["brv_description"].ToString();
                    /// Color Artículo ;
                    newRow["cov_description"] = drow["cov_description"].ToString();
                    /// Talla
                    newRow["idv_size"] = drow["idv_size"].ToString();

                    newRow["calidad"] = drow["calidad"].ToString();

                    //newRow["idv_size"] = drow["idv_size"].ToString();
                    ///
                    /// Cantidades facturAQUARELLAs del articulo en la misma linea
                    Decimal qtyInvoice = Convert.ToDecimal((drow["IDN_QTY"].ToString().Equals(String.Empty)) ? "1" : (drow["IDN_QTY"].ToString()));
                    /// Cantidades en la misma linea
                    Decimal qtyInLine = Convert.ToDecimal(drow["totalqtyscanbereturned"]);
                    newRow["idn_qty_line"] = qtyInLine;

                    /// Cantidad ///
                    newRow["idn_qty"] = 1;
                    /// Precio de venta
                    Decimal sellPrice = Convert.ToDecimal(drow["IDN_SELLPRICE"].ToString());
                    newRow["IDN_SELLPRICE"] = sellPrice;
                    /// Comision
                    Decimal comision = Convert.ToDecimal(drow["IDN_COMMISSION"].ToString());
                    /// Comision individual
                    newRow["IDN_COMMISSION"] = comision / qtyInLine;
                    /// Dscto Gnral Total de la factura ///
                    ///
                    Decimal dsctGeneralFactura = Convert.ToDecimal(drow["ion_disscount"].ToString());

                    ///
                    /// Dscto Lineal ///
                    /// El dscto lineal es una sumatoria las cantidades del articulo en la linea
                    Decimal dctoLinealArt = Convert.ToDecimal((drow["IDN_DISSCOUNT"].ToString().Equals(String.Empty)) ? "0" : (drow["IDN_DISSCOUNT"].ToString()));
                    /// Solo si existe descuento
                    if (dctoLinealArt > 0)
                    {
                        dctoLinealArt = dctoLinealArt / qtyInvoice;
                    }
                    newRow["IDN_DISSCOUNT"] = dctoLinealArt;

                    /// Flete ///
                    ///
                    Decimal handling = Convert.ToDecimal(drow["ihn_handling"].ToString());
                    ///////////////////////////////////////////////////////////////////////////////////////////////////////
                    /// Sumar todas las cantidades que se puden devolver de este articulo
                    /// /// Muchas veces la consulta podra devolver el mismo articulo en varias lineas, debido
                    /// a la diferencia entre numero de linea y numero de orden entre los registros, por eso se
                    /// debera sumar las cantidades posibles a devolver.
                    // Decimal qtysDelArticulo = 0;

                    /// Determinar comision para un articulo
                    /////if (comision > 0)
                    ////    comision = Math.Round((comision / qtysDelArticulo), 2);
                    ///
                    /// Cantidades TOTALes en la facura
                    Decimal cantTot = Convert.ToDecimal(drow["qtytotalinvoiced"].ToString());
                    /// Iva Total ///
                    Decimal ivaTot = Convert.ToDecimal(drow["ihn_taxes"].ToString());

                    ///
                    /// Base total de la facturacion ///
                    Decimal baseFac = Convert.ToDecimal(drow["base"].ToString());

                    ///////////////////////////////////////////////////////////////////////////////////////////////////
                    Decimal ivaIndividual = this.calculoIva(ivaTot, handling, dsctGeneralFactura, baseFac);

                    ///////////////////////////////////////////////////////////////////////////////////////////////////
                    Decimal fleteIndividual = 0;
                    if (handling > 0)
                    {
                        fleteIndividual = Math.Round((handling / cantTot), 2);
                    }

                    ///////////////////////////////////////////////////////////////////////////////////////////////////
                    Decimal dsctoGralIndividualizado = 0;
                    if (dsctGeneralFactura > 0)
                    {
                        dsctoGralIndividualizado = Math.Round((dsctGeneralFactura / cantTot), 2);
                    }

                    /// Calcular el valor del iva a nivel unitario .
                    /// Formula = (Precio venta + fleteIndividual - comision lineal a nivel unitario) * porcentIva
                    ivaIndividual = (sellPrice + fleteIndividual - (comision / qtyInvoice) - dsctoGralIndividualizado - dctoLinealArt) * ivaIndividual; ///sellPrice* ivaIndividual;
                    ///
                    //newRow["TAXES"] = Math.Round(ivaIndividual, 2);
                    newRow["TAXES"] = ivaIndividual;
                    ///
                    newRow["checked"] = false;

                    ///
                    dv.Table.Rows.Add(newRow);
                    ///
                    msnMessage.LoadMessage(" > Se ha agregado el articulo -" + article + "- en talla -" + size + "- en la factura No. -" + noInvoice + "-.", UserControl.ucMessage.MessageType.Information);
                    this.GridViewArticlesToReturn.DataSource = dv;
                    this.GridViewArticlesToReturn.DataBind();
                    Session[_nameSessionArtsRet] = dv;
                    this.calculateTotals();
                }
            }
            else
            {
                msnMessage.LoadMessage(" > No se puede devolver el articulo -" + article + "- en talla -" + size + "- en la factura No. -" + noInvoice + "-; busque otra factura.", UserControl.ucMessage.MessageType.Error);
            }
        }