Esempio n. 1
0
        public static decimal Valor_Medio_Est_Produto(string vCd_empresa,
                                                      string vCd_Produto,
                                                      TObjetoBanco banco)
        {
            if ((string.IsNullOrEmpty(vCd_empresa)) || (string.IsNullOrEmpty(vCd_Produto)))
            {
                return(0);
            }
            object obj = new TCD_LanEstoque(banco).BuscarSaldo_EstoqueEscalar(
                new TpBusca[]
            {
                new TpBusca()
                {
                    vNM_Campo = "a.cd_empresa",
                    vOperador = "=",
                    vVL_Busca = "'" + vCd_empresa.Trim() + "'"
                },
                new TpBusca()
                {
                    vNM_Campo = "a.cd_produto",
                    vOperador = "=",
                    vVL_Busca = "'" + vCd_Produto.Trim() + "'"
                }
            }, "a.vl_medio");

            return(obj == null ? decimal.Zero : Convert.ToDecimal(obj.ToString()));
        }
Esempio n. 2
0
        public static bool VlMedioEstoque(string vCd_empresa, string vCd_Produto, ref decimal vVl_medio, TObjetoBanco banco)
        {
            if (string.IsNullOrEmpty(vCd_empresa) ||
                string.IsNullOrEmpty(vCd_Produto))
            {
                return(false);
            }

            object obj = new TCD_LanEstoque(banco).BuscarSaldo_EstoqueEscalar(
                new TpBusca[]
            {
                new TpBusca()
                {
                    vNM_Campo = "a.cd_empresa",
                    vOperador = "=",
                    vVL_Busca = "'" + vCd_empresa.Trim() + "'"
                },
                new TpBusca()
                {
                    vNM_Campo = "a.cd_produto",
                    vOperador = "=",
                    vVL_Busca = "'" + vCd_Produto.Trim() + "'"
                }
            }, "a.vl_medio");

            if (obj != null)
            {
                vVl_medio = decimal.Parse(obj.ToString());
                return(true);
            }
            else
            {
                return(false);
            }
        }
Esempio n. 3
0
        public static bool SaldoEstoqueLocal(string vCD_Empresa, string vCD_Produto, string vCd_local, ref decimal vSaldo, TObjetoBanco banco)
        {
            if (string.IsNullOrEmpty(vCD_Empresa) || string.IsNullOrEmpty(vCD_Produto))
            {
                return(false);
            }

            if ((!new TCD_CadProduto(banco).ItemServico(vCD_Produto)) &&
                (!new TCD_CadProduto(banco).ProdutoConsumoInterno(vCD_Produto)))
            {
                TpBusca[] vBusca = new TpBusca[2];
                vBusca[0].vNM_Campo = "a.CD_Empresa";
                vBusca[0].vVL_Busca = "'" + vCD_Empresa + "'";
                vBusca[0].vOperador = "=";

                vBusca[1].vNM_Campo = "a.CD_Produto";
                vBusca[1].vVL_Busca = "'" + vCD_Produto + "'";
                vBusca[1].vOperador = "=";
                if (!string.IsNullOrEmpty(vCd_local))
                {
                    Array.Resize(ref vBusca, vBusca.Length + 1);
                    vBusca[vBusca.Length - 1].vNM_Campo = "a.CD_Local";
                    vBusca[vBusca.Length - 1].vVL_Busca = "'" + vCd_local + "'";
                    vBusca[vBusca.Length - 1].vOperador = "=";

                    object obj = new TCD_LanEstoque("SqlCodeBuscaSaldo_EstoqueLocal", banco).BuscarEscalar(vBusca, "isnull(a.tot_saldo, 0)");
                    if (obj == null)
                    {
                        return(false);
                    }
                    else
                    {
                        vSaldo = Math.Round(Convert.ToDecimal(obj.ToString()), 3, MidpointRounding.AwayFromZero);
                        return(true);
                    }
                }
                else
                {
                    object obj = new TCD_LanEstoque("SqlCodeBuscaSaldo_Estoque", banco).BuscarEscalar(vBusca, "isnull(a.tot_saldo, 0)");
                    if (obj == null)
                    {
                        return(false);
                    }
                    else
                    {
                        vSaldo = Math.Round(Convert.ToDecimal(obj.ToString()), 3, MidpointRounding.AwayFromZero);
                        return(true);
                    }
                }
            }
            else
            {
                return(false);
            }
        }
Esempio n. 4
0
        public static decimal CustoTotalEstoque(string vCd_empresa, TObjetoBanco banco)
        {
            TpBusca[] filtro = new TpBusca[0];
            if (vCd_empresa.Trim() != string.Empty)
            {
                Array.Resize(ref filtro, filtro.Length + 1);
                filtro[filtro.Length - 1].vNM_Campo = "a.cd_empresa";
                filtro[filtro.Length - 1].vOperador = "in";
                filtro[filtro.Length - 1].vVL_Busca = "(" + vCd_empresa.Trim() + ")";
            }
            else
            {
                Array.Resize(ref filtro, filtro.Length + 1);
                filtro[filtro.Length - 1].vNM_Campo = string.Empty;
                filtro[filtro.Length - 1].vOperador = "EXISTS";
                filtro[filtro.Length - 1].vVL_Busca = "(select 1 from tb_div_usuario_x_empresa x " +
                                                      "where x.cd_empresa = a.cd_empresa " +
                                                      "and ((x.login = '******') or " +
                                                      "(exists(select 1 from tb_div_usuario_x_grupos y " +
                                                      "         where y.logingrp = x.login and y.loginusr = '******'))))";
            }
            object obj = new TCD_LanEstoque(banco).BuscarEstoqueSintenticoEscalar(filtro, "ISNULL(SUM(isnull(a.tot_saldo,0) * isnull(a.vl_medio,0)), 0)");

            if (obj != null)
            {
                try
                {
                    return(Convert.ToDecimal(obj.ToString()));
                }
                catch
                { return(decimal.Zero); }
            }
            else
            {
                return(decimal.Zero);
            }
        }
Esempio n. 5
0
        public static decimal Vl_MedioLocal(string vCd_empresa,
                                            string vCd_produto,
                                            string vCd_local,
                                            TObjetoBanco banco)
        {
            if (string.IsNullOrEmpty(vCd_empresa) ||
                string.IsNullOrEmpty(vCd_produto) ||
                string.IsNullOrEmpty(vCd_local))
            {
                return(decimal.Zero);
            }
            object obj = new TCD_LanEstoque("SqlCodeBuscaSaldo_EstoqueLocal", banco).BuscarEscalar(
                new TpBusca[]
            {
                new TpBusca()
                {
                    vNM_Campo = "a.cd_empresa",
                    vOperador = "=",
                    vVL_Busca = "'" + vCd_empresa.Trim() + "'"
                },
                new TpBusca()
                {
                    vNM_Campo = "a.cd_produto",
                    vOperador = "=",
                    vVL_Busca = "'" + vCd_produto.Trim() + "'"
                },
                new TpBusca()
                {
                    vNM_Campo = "a.cd_local",
                    vOperador = "=",
                    vVL_Busca = "'" + vCd_local.Trim() + "'"
                }
            }, "a.vl_medio");

            return(obj == null ? decimal.Zero : decimal.Parse(obj.ToString()));
        }
Esempio n. 6
0
        public static string Gravar(TRegistro_Devolucao val,
                                    CamadaDados.Financeiro.Duplicata.TList_RegLanParcela lParc,
                                    BancoDados.TObjetoBanco banco)
        {
            bool          st_transacao = false;
            TCD_Devolucao qtb_dev      = new TCD_Devolucao();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_dev.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_dev.Banco_Dados = banco;
                }
                decimal            tot_devolver = Math.Round(val.lItens.Sum(p => p.Qtd_devolver * (p.Vl_subtotalliquido / p.Quantidade)), 2);
                TList_DevolucaoFIN lDevFin      = new TList_DevolucaoFIN();
                if (lParc?.Count > 0)
                {
                    foreach (CamadaDados.Financeiro.Duplicata.TRegistro_LanParcela p in lParc)
                    {
                        if (tot_devolver > decimal.Zero)
                        {
                            lDevFin.Add(new TRegistro_DevolucaoFIN()
                            {
                                Nr_lancto    = p.Nr_lancto,
                                Cd_parcela   = p.Cd_parcela,
                                Vl_devolvido = tot_devolver < p.cVl_atual ? tot_devolver : p.cVl_atual
                            });
                            tot_devolver -= tot_devolver < p.cVl_atual ? tot_devolver : p.cVl_atual;
                        }
                        else
                        {
                            break;
                        }
                    }
                }
                if (tot_devolver > decimal.Zero)
                {
                    //Buscar Config Adto
                    CamadaDados.Financeiro.Cadastros.TList_ConfigAdto lCfgAdto =
                        CamadaNegocio.Financeiro.Cadastros.TCN_CadConfigAdto.Buscar(val.Cd_empresa,
                                                                                    string.Empty,
                                                                                    string.Empty,
                                                                                    string.Empty,
                                                                                    string.Empty,
                                                                                    1,
                                                                                    string.Empty,
                                                                                    qtb_dev.Banco_Dados);
                    if (lCfgAdto.Count.Equals(0))
                    {
                        throw new Exception("Não existe configuração adiantamento para gerar credito.");
                    }
                    //Gerar Credito do valor devolvido
                    CamadaDados.Financeiro.Adiantamento.TRegistro_LanAdiantamento rAdto = new CamadaDados.Financeiro.Adiantamento.TRegistro_LanAdiantamento();
                    rAdto.Cd_clifor  = val.Cd_clifor;
                    rAdto.Cd_empresa = val.Cd_empresa;
                    //Buscar endereco
                    object obj = new CamadaDados.Financeiro.Cadastros.TCD_CadEndereco().BuscarEscalar(
                        new Utils.TpBusca[]
                    {
                        new Utils.TpBusca()
                        {
                            vNM_Campo = "a.cd_clifor",
                            vOperador = "=",
                            vVL_Busca = "'" + val.Cd_clifor.Trim() + "'"
                        }
                    }, "a.cd_endereco");
                    rAdto.CD_Endereco  = obj == null ? string.Empty : obj.ToString();
                    rAdto.Ds_adto      = "CREDITO RECEBIDO DEVOLUÇÃO VENDA";
                    rAdto.Tp_movimento = "R";
                    rAdto.Dt_lancto    = val.Dt_devolucao;
                    rAdto.Vl_adto      = tot_devolver;
                    rAdto.ST_ADTO      = "A";
                    rAdto.TP_Lancto    = "T";//Frente Caixa
                    CamadaNegocio.Financeiro.Adiantamento.TCN_LanAdiantamento.Gravar(rAdto, qtb_dev.Banco_Dados);
                    //Quitar adiantamento
                    rAdto.List_Caixa.Add(new CamadaDados.Financeiro.Caixa.TRegistro_LanCaixa()
                    {
                        Cd_ContaGer    = lCfgAdto[0].Cd_contagerDEV_CV,
                        Cd_Empresa     = val.Cd_empresa,
                        Cd_Historico   = lCfgAdto[0].Cd_historico_ADTO_R,
                        Cd_LanctoCaixa = decimal.Zero,
                        ComplHistorico = "CREDITO RECEBIDO DEVOLUÇÃO VENDA",
                        Dt_lancto      = val.Dt_devolucao,
                        Login          = Utils.Parametros.pubLogin,
                        Nr_Docto       = "DEVPDV",
                        St_Estorno     = "N",
                        St_Titulo      = "N",
                        Vl_PAGAR       = decimal.Zero,
                        Vl_RECEBER     = rAdto.Vl_adto,
                        NM_Clifor      = val.Nm_clifor
                    });
                    CamadaNegocio.Financeiro.Adiantamento.TCN_LanAdiantamentoXCaixa.Quitar_Adiantamento(rAdto, qtb_dev.Banco_Dados);
                    val.Id_adto = rAdto.Id_adto;
                    //Dar saida do valor do credito para não duplicar o valor
                    string ret =
                        CamadaNegocio.Financeiro.Caixa.TCN_LanCaixa.GravaLanCaixa(
                            new CamadaDados.Financeiro.Caixa.TRegistro_LanCaixa()
                    {
                        Cd_ContaGer    = lCfgAdto[0].Cd_contagerDEV_CV,
                        Cd_Empresa     = val.Cd_empresa,
                        Cd_Historico   = lCfgAdto[0].Cd_historicoDEV_Venda,
                        Cd_LanctoCaixa = decimal.Zero,
                        ComplHistorico = "DEVOLUÇÃO VENDA",
                        Dt_lancto      = val.Dt_devolucao,
                        Login          = Utils.Parametros.pubLogin,
                        Nr_Docto       = "DEVPDV",
                        St_Estorno     = "N",
                        St_Titulo      = "N",
                        Vl_PAGAR       = rAdto.Vl_adto,
                        Vl_RECEBER     = decimal.Zero,
                        NM_Clifor      = val.Nm_clifor
                    }, qtb_dev.Banco_Dados);
                    val.Cd_contager       = lCfgAdto[0].Cd_contagerDEV_CV;
                    val.Cd_lanctocaixastr = CamadaDados.TDataQuery.getPubVariavel(ret, "@P_CD_LANCTOCAIXA");
                }
                //Gravar devolucao
                val.Id_devolucaostr = CamadaDados.TDataQuery.getPubVariavel(qtb_dev.Gravar(val), "@P_ID_DEVOLUCAO");
                lDevFin.ForEach(p =>
                {
                    p.Cd_empresa   = val.Cd_empresa;
                    p.Id_devolucao = val.Id_devolucao;
                    TCN_DevolucaoFIN.Gravar(p, qtb_dev.Banco_Dados);
                });
                //Gravar Itens Devolvidos
                val.lItens.ForEach(p =>
                {
                    decimal vl_unit = decimal.Zero;
                    //Buscar Vl.Unitario
                    object objVl_unit = new TCD_LanEstoque(qtb_dev.Banco_Dados).BuscarEscalar(
                        new Utils.TpBusca[]
                    {
                        new Utils.TpBusca()
                        {
                            vNM_Campo = string.Empty,
                            vOperador = "exists",
                            vVL_Busca = "(select 1 from TB_PDV_CupomFiscal_Item_X_Estoque x " +
                                        "where a.Id_LanctoEstoque = x.Id_LanctoEstoque " +
                                        "and a.cd_empresa = x.cd_empresa " +
                                        "and a.cd_produto = x.cd_produto " +
                                        "and x.id_lancto = " + p.Id_lanctovenda.ToString() + " " +
                                        "and x.id_cupom = " + p.Id_vendarapida.ToString() + " " +
                                        "and x.cd_empresa = '" + p.Cd_empresa.Trim() + "' " +
                                        "and x.cd_produto = '" + p.Cd_produto.Trim() + "')"
                        }
                    }, "a.vl_unitario");
                    if (objVl_unit == null || string.IsNullOrEmpty(objVl_unit.ToString()))
                    {
                        vl_unit = TCN_LanEstoque.BuscarVlEstoqueUltimaCompra(val.Cd_empresa, p.Cd_produto, qtb_dev.Banco_Dados);
                    }
                    else
                    {
                        vl_unit = decimal.Parse(objVl_unit.ToString());
                    }
                    //dar entrada novamente no estoque
                    string id_lanctoestoque = CamadaDados.TDataQuery.getPubVariavel(
                        TCN_LanEstoque.GravarEstoque(
                            new TRegistro_LanEstoque()
                    {
                        Cd_empresa    = val.Cd_empresa,
                        Cd_produto    = p.Cd_produto,
                        Cd_local      = p.Cd_local,
                        Dt_lancto     = val.Dt_devolucao,
                        Tp_movimento  = "E",
                        Qtd_entrada   = p.Qtd_devolver,
                        Qtd_saida     = decimal.Zero,
                        Vl_unitario   = vl_unit,
                        Vl_subtotal   = vl_unit,
                        Tp_lancto     = "L",
                        St_registro   = "A",
                        Ds_observacao = "DEVOLUCAO VENDA FRENTE CAIXA Nº" + p.Id_vendarapida.Value.ToString()
                    }, qtb_dev.Banco_Dados), "@@P_ID_LANCTOESTOQUE");
                    //gravar itens devolvidos
                    TCN_ItensDevolvidos.Gravar(new TRegistro_ItensDevolvidos()
                    {
                        Cd_empresa          = val.Cd_empresa,
                        Id_devolucao        = val.Id_devolucao,
                        Id_lancto           = p.Id_lanctovenda,
                        Id_cupom            = p.Id_vendarapida,
                        Cd_produto          = p.Cd_produto,
                        Id_lanctoestoquestr = id_lanctoestoque
                    }, qtb_dev.Banco_Dados);
                    //Grade Produto
                    p.lGrade.ForEach(v =>
                    {
                        if (v.Vl_mov > decimal.Zero)
                        {
                            TCN_GradeEstoque.Gravar(
                                new TRegistro_GradeEstoque
                            {
                                Cd_empresa        = p.Cd_empresa,
                                Cd_produto        = p.Cd_produto,
                                Id_lanctoestoque  = decimal.Parse(id_lanctoestoque),
                                Id_caracteristica = v.Id_caracteristica,
                                Id_item           = v.Id_item,
                                quantidade        = v.Vl_mov
                            }, qtb_dev.Banco_Dados);
                        }
                    });
                });
                //Reprocessar Comissão
                new TCD_VendaRapida_Item(qtb_dev.Banco_Dados).Select(
                    new Utils.TpBusca[]
                {
                    new Utils.TpBusca()
                    {
                        vNM_Campo = "a.id_vendarapida",
                        vOperador = "=",
                        vVL_Busca = val.lItens[0].Id_vendarapida.ToString()
                    },
                    new Utils.TpBusca()
                    {
                        vNM_Campo = "a.cd_empresa",
                        vOperador = "=",
                        vVL_Busca = "'" + val.Cd_empresa.Trim() + "'"
                    }
                }, 0, string.Empty, string.Empty).ForEach(p => PDV.TCN_VendaRapida_Item.ProcessarComissao(p, qtb_dev.Banco_Dados));
                if (val.lItens.Count > 0)
                {
                    //Recalcular Pontos Fidelidade
                    new CamadaDados.Faturamento.Fidelizacao.TCD_PontosFidelidade(qtb_dev.Banco_Dados).Select(
                        new Utils.TpBusca[]
                    {
                        new Utils.TpBusca()
                        {
                            vNM_Campo = "a.cd_empresa",
                            vOperador = "=",
                            vVL_Busca = "'" + val.Cd_empresa.Trim() + "'"
                        },
                        new Utils.TpBusca()
                        {
                            vNM_Campo = "a.id_cupom",
                            vOperador = "=",
                            vVL_Busca = val.lItens[0].Id_vendarapida.ToString()
                        }
                    }, 0, string.Empty, string.Empty).ForEach(x =>
                    {
                        System.Collections.Hashtable hs = new System.Collections.Hashtable(3);
                        hs.Add("@P_CD_EMPRESA", x.Cd_empresa);
                        hs.Add("@P_ID_CUPOM", x.Id_cupomstr);
                        hs.Add("@P_QTD_DEVOLVER", val.lItens.Sum(p => p.Qtd_devolver * (x.Qt_pontos / p.Quantidade)));
                        qtb_dev.executarSql("update TB_FAT_PontosFidelidade set QT_Pontos = QT_Pontos - @P_QTD_DEVOLVER" +
                                            " where cd_empresa = @P_CD_EMPRESA" +
                                            " and id_cupom = @P_ID_CUPOM", hs);
                    });

                    //Recalcular Resgate
                    new CamadaDados.Faturamento.Fidelizacao.TCD_ResgatePontos(qtb_dev.Banco_Dados).Select(
                        new Utils.TpBusca[]
                    {
                        new Utils.TpBusca()
                        {
                            vNM_Campo = "a.cd_empresa",
                            vOperador = "=",
                            vVL_Busca = "'" + val.Cd_empresa.Trim() + "'"
                        },
                        new Utils.TpBusca()
                        {
                            vNM_Campo = "a.id_cupom",
                            vOperador = "=",
                            vVL_Busca = val.lItens[0].Id_vendarapida.ToString()
                        }
                    }, 0, string.Empty).ForEach(x =>
                    {
                        System.Collections.Hashtable hs = new System.Collections.Hashtable(4);
                        hs.Add("@P_CD_EMPRESA", x.Cd_empresa);
                        hs.Add("@P_ID_CUPOM", x.Id_cupomstr);
                        hs.Add("@P_ID_PONTO", x.Id_pontostr);
                        hs.Add("@P_QTD_DEVOLVER", val.lItens.Sum(p => p.Qtd_devolver * (x.Qt_pontos / p.Quantidade)));
                        qtb_dev.executarSql("update TB_FAT_ResgatePontos set QT_Pontos = QT_Pontos - @P_QTD_DEVOLVER" +
                                            " where cd_empresa = @P_CD_EMPRESA" +
                                            " and id_cupom = @P_ID_CUPOM" +
                                            " and id_ponto = @P_ID_PONTO", hs);
                    });
                }
                if (st_transacao)
                {
                    qtb_dev.Banco_Dados.Commit_Tran();
                }
                return(val.Id_devolucaostr);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_dev.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro gravar devolução:" + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_dev.deletarBanco_Dados();
                }
            }
        }