Пример #1
0
        public void CalculateCommission(LojaDefinition lojaDefinition)
        {
            try
            {
                descuentoTotal = DESCONTO != null?(decimal)DESCONTO:0;
                pagosTarjeta   = 0;
                bonosRedimidos = 0;

                foreach (LOJA_VENDA_PRODUTO item in lstLojaVendaProduto)
                {
                    if (item.QTDE_BRINDE == 0)
                    {
                        /* Bonos vendidos */
                        if (lojaDefinition.lstProdBonos.Where(x => x.PRODUTO == item.PRODUTO).Count() > 0)
                        {
                            bonosVendidos   += (decimal)item.PRECO_LIQUIDO;
                            ivaBonosVendidos = ((decimal)item.PRECO_LIQUIDO * (decimal)lojaDefinition.IVA) / (100 + lojaDefinition.IVA);
                        }
                        else
                        {
                            SellOutBruto += (decimal)item.PRECO_LIQUIDO;
                            vlrImpuestos += (decimal)(item.PRECO_LIQUIDO * lojaDefinition.IVA) / (100 + lojaDefinition.IVA);
                        }

                        /* descuentos por item */
                        if (item.DESCONTO_ITEM != null)
                        {
                            descuentoTotal += (decimal)item.DESCONTO_ITEM;
                        }
                    }
                }

                foreach (LOJA_VENDA_PGTO item in lstLojaVendaPgto)
                {
                    foreach (LOJA_VENDA_PARCELAS itemParcelas in item.LOJA_VENDA_PARCELAS)
                    {
                        /* Comisiones de tarjeta */
                        if (itemParcelas.CODIGO_ADMINISTRADORA != null)
                        {
                            decimal?porComision = lojaDefinition.lstAdministradorasCartao.Where(x => x.CODIGO_ADMINISTRADORA == itemParcelas.CODIGO_ADMINISTRADORA).Select(x => x.TAXA_ADMINISTRACAO).FirstOrDefault();
                            pagosTarjeta += (decimal)itemParcelas.VALOR;

                            comisionTarjetas += ((decimal)itemParcelas.VALOR * (decimal)(porComision != null ? porComision : 0)) / 100;
                        }

                        /* pagos con bonos */
                        if (lojaDefinition.lstTiposPgtoBonos.Where(x => x.TIPO_PGTO == itemParcelas.TIPO_PGTO).Count() > 0)
                        {
                            bonosRedimidos    += (decimal)itemParcelas.VALOR;
                            ivaBonosRedimidos += ((decimal)itemParcelas.VALOR * (decimal)lojaDefinition.IVA) / (100 + lojaDefinition.IVA);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void calculateDoWork(object sender, DoWorkEventArgs e)
        {
            BizParametroVendedor bizParametroVendedor = new BizParametroVendedor();

            /*Búsqueda de ventas y detalle productos y pagos*/

            int numItems = lstVentas.Count;

            for (int i = 0; i < numItems; i++)
            {
                LojaDefinition lojaDefinition = lstLojaDefinition
                                                .Where(x => x.COD_FILIAL == lstVentas[i].CODIGO_FILIAL).FirstOrDefault();

                CSS_PARAMETRO_VENDEDOR parametroVendedor = bizParametroVendedor.getParametroVendedor(new CSS_PARAMETRO_VENDEDOR()
                {
                    vendedor = lstVentas[i].VENDEDOR
                });
                CSS_PARAMETRO_VENDEDOR parametroAdministrador = bizParametroVendedor.getParametroVendedor(new CSS_PARAMETRO_VENDEDOR()
                {
                    vendedor = lstVentas[i].GERENTE_PERIODO
                });

                decimal porComisionVendedor;
                decimal porComisionAdministrador;

                if (lojaDefinition.cumplePresupuesto)
                {
                    porComisionAdministrador = parametroAdministrador != null ? parametroAdministrador.comisionCumple : 0;
                    porComisionVendedor      = parametroVendedor != null ? parametroVendedor.comisionCumple : 0;
                }
                else
                {
                    porComisionAdministrador = parametroAdministrador != null ? parametroAdministrador.comisionNoCumple : 0;
                    porComisionVendedor      = parametroVendedor != null ? parametroVendedor.comisionNoCumple : 0;
                }

                decimal sellOutBrutoSinIvaSinComisionTarjetas = lstVentas[i].SellOutBruto - (lstVentas[i].vlrImpuestos + lstVentas[i].comisionTarjetas);
                decimal ventaBonosSinIva     = (lstVentas[i].bonosVendidos - lstVentas[i].ivaBonosVendidos) / 2;
                decimal redencionBonosSinIva = (lstVentas[i].bonosRedimidos - lstVentas[i].ivaBonosRedimidos) / 2;

                lstVentas[i].sellOutNeto           = sellOutBrutoSinIvaSinComisionTarjetas + ventaBonosSinIva + redencionBonosSinIva;
                lstVentas[i].comisionAdministrador = (lstVentas[i].sellOutNeto * porComisionAdministrador) / 100;
                lstVentas[i].comisionVendedor      = (lstVentas[i].sellOutNeto * porComisionVendedor) / 100;

                calculateWorker.ReportProgress((i * 100) / numVentas, lojaDefinition.COD_FILIAL);//+ " -> Ticket " + lstLojaVenda[i].TICKET);
            }


            //List<LojaVenda> lstTest = lstVentas.Where(x => x.VENDEDOR == null).ToList();
        }
        private void searchDoWork(object sender, DoWorkEventArgs e)
        {
            /*Búsqueda de ventas y detalle productos y pagos*/

            for (int i = 0; i < numVentas; i++)
            {
                LojaDefinition lojaDefinition = lstLojaDefinition
                                                .Where(x => x.COD_FILIAL == lstLojaVenda[i].CODIGO_FILIAL).FirstOrDefault();

                lstVentas.Add(new LojaVenda(lstLojaVenda[i], lojaDefinition));

                SearchWorker.ReportProgress((i * 100) / numVentas, lstLojaVenda[i].TICKET + " de la tienda " + lojaDefinition.COD_FILIAL);
            }
        }
Пример #4
0
        public LojaVenda(LOJA_VENDA lojaVenda, LojaDefinition lojaDefinition)
        {
            CODIGO_FILIAL     = lojaVenda.CODIGO_FILIAL;
            DATA_VENDA        = lojaVenda.DATA_VENDA;
            TICKET            = lojaVenda.TICKET;
            VENDEDOR          = lojaVenda.VENDEDOR;
            DESCONTO          = lojaVenda.DESCONTO;
            VALOR_TIKET       = lojaVenda.VALOR_TIKET;
            VALOR_PAGO        = lojaVenda.VALOR_PAGO;
            VALOR_VENDA_BRUTA = lojaVenda.VALOR_VENDA_BRUTA;
            VALOR_TROCA       = lojaVenda.VALOR_TROCA;
            TERMINAL          = lojaVenda.TERMINAL;
            GERENTE_LOJA      = lojaVenda.GERENTE_LOJA;
            GERENTE_PERIODO   = lojaVenda.GERENTE_PERIODO;
            LANCAMENTO_CAIXA  = lojaVenda.LANCAMENTO_CAIXA;

            lstLojaVendaProduto = bizLojaVendaProduto.getLojaVendaProdutoList(lojaVenda);
            lstLojaVendaPgto    = bizLojaVendaPgto.getLojaVendaPgtoList(lojaVenda);

            CalculateCommission(lojaDefinition);
        }
        private void searchWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            //btnComission.Enabled = true;
            btnComission.BackColor      = Color.LimeGreen;
            toolStripProgressBar1.Value = 0;


            toolStripStatusLabel1.Text = "Calculando cumplimiento de las tiendas...";

            List <string> lsTienda = lstLojaVenda.Select(x => x.CODIGO_FILIAL).Distinct().ToList();

            foreach (string item in lsTienda)
            {
                LojaDefinition lojaDef = lstLojaDefinition.Where(x => x.COD_FILIAL == item).FirstOrDefault();
                lojaDef.ventasLoja = lstVentas.Where(x => x.CODIGO_FILIAL == lojaDef.COD_FILIAL).Sum(x => x.SellOutBruto);
                lojaDef.calculaCumplimiento(int.Parse(cmbMes.SelectedItem.ToString()));
            }

            calculateWorker.DoWork             += new DoWorkEventHandler(calculateDoWork);
            calculateWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(calculateWorkerCompleted);
            calculateWorker.ProgressChanged    += new ProgressChangedEventHandler(calculateWorker_ProgressChanged);
            calculateWorker.RunWorkerAsync();
        }