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); } }
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(); }