Пример #1
0
        public static string AcertarVlMedio(TRegistro_LanEstoque val, TObjetoBanco banco)
        {
            bool           st_transacao = false;
            TCD_LanEstoque qtb_estoque  = new TCD_LanEstoque();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_estoque.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_estoque.Banco_Dados = banco;
                }
                string retorno = qtb_estoque.AcertarVlMedio(val);
                if (st_transacao)
                {
                    qtb_estoque.Banco_Dados.Commit_Tran();
                }
                return(retorno);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_estoque.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro acertar valor medio: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_estoque.deletarBanco_Dados();
                }
            }
        }
Пример #2
0
        public static void CancelarEstoque(TRegistro_LanEstoque val, TObjetoBanco banco)
        {
            bool           st_transacao = false;
            TCD_LanEstoque qtb_est      = new TCD_LanEstoque();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_est.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_est.Banco_Dados = banco;
                }
                qtb_est.CancelarEstoque(val);
                if (st_transacao)
                {
                    qtb_est.Banco_Dados.Commit_Tran();
                }
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_est.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro cancelar estoque: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_est.deletarBanco_Dados();
                }
            }
        }
Пример #3
0
        private void afterGrava()
        {
            if (rProd != null)
            {
                if (!string.IsNullOrEmpty(cd_tabelapreco.Text))
                {
                    if (vl_precovenda.Value > 0)
                    {
                        TRegistro_LanPrecoItem rPreco = new TRegistro_LanPrecoItem();
                        rPreco.CD_Empresa     = cd_empresa.Text;
                        rPreco.CD_TabelaPreco = cd_tabelapreco.Text;
                        rPreco.Dt_preco       = CamadaDados.UtilData.Data_Servidor();
                        rPreco.VL_PrecoVenda  = vl_precovenda.Value;
                        rProd.lPrecoItem.Add(rPreco);
                        TCN_CadProduto.Gravar(rProd, null);
                        MessageBox.Show("Produto Atualizado com sucesso!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else
                {
                    MessageBox.Show("É necessário informar tabela preço!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }


                //Adicionar Código de Barras
                if (!string.IsNullOrEmpty(codBarra.Text))
                {
                    rProd.lCodBarra.Add(
                        new TRegistro_CodBarra()
                    {
                        Cd_codbarra = codBarra.Text
                    });
                }
                try
                {
                    if (string.IsNullOrEmpty(cd_local.Text))
                    {
                        MessageBox.Show("Informe o Local de Armazenagem para ajustar estoque!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        cd_local.Focus();
                        return;
                    }
                    if (qtd_entrada.Value.Equals(decimal.Zero))
                    {
                        MessageBox.Show("Informe a QTD de ajuste de estoque do produto!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        qtd_entrada.Focus();
                        return;
                    }
                    if (vl_entrada.Value.Equals(decimal.Zero))
                    {
                        MessageBox.Show("Informe o Valor Médio do produto!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        vl_entrada.Focus();
                        return;
                    }
                    if (quantidade.Value != qtd_entrada.Value)
                    {
                        //Gravar no estoque
                        TRegistro_LanEstoque regEstoque = new TRegistro_LanEstoque();
                        regEstoque.Cd_empresa      = cd_empresa.Text;
                        regEstoque.Cd_produto      = cd_produto.Text;
                        regEstoque.Cd_local        = cd_local.Text;
                        regEstoque.Dt_lancto       = CamadaDados.UtilData.Data_Servidor();
                        regEstoque.Vl_medioestoque = vl_entrada.Value;
                        regEstoque.St_registro     = "A";
                        regEstoque.Tp_lancto       = "M";
                        if (quantidade.Value < qtd_entrada.Value)
                        {
                            regEstoque.Tp_movimento = "E";
                            regEstoque.Qtd_entrada  = qtd_entrada.Value - quantidade.Value;
                            regEstoque.Vl_subtotal  = vl_entrada.Value * (qtd_entrada.Value - quantidade.Value);
                        }
                        else
                        {
                            regEstoque.Tp_movimento = "S";
                            regEstoque.Qtd_saida    = quantidade.Value - qtd_entrada.Value;
                            regEstoque.Vl_subtotal  = vl_entrada.Value * (quantidade.Value - qtd_entrada.Value);
                        }
                        regEstoque.Vl_unitario = vl_entrada.Value;
                        //Gravar Estoque
                        TCN_LanEstoque.GravarEstoque(regEstoque, null);
                        //Atualizar Vl.Médio
                        TCN_LanEstoque.AcertarVlMedio(regEstoque, null);
                    }
                    else
                    {
                        MessageBox.Show("Não é possivel alterar estoque de produto mantendo a mesma quantidade!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }
                    //Gravar Produto
                    CamadaNegocio.Estoque.Cadastros.TCN_CadProduto.Gravar(rProd, null);
                    MessageBox.Show("Produto Atualizado com sucesso!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    LimparCampos();
                    BB_Gravar.Visible   = false;
                    BB_Cancelar.Visible = false;
                    BB_Novo.Visible     = true;
                    pDados.Enabled      = false;
                }
                catch (Exception ex)
                { MessageBox.Show(ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information); }
            }
        }
Пример #4
0
        public static TList_Apontamento_Estoque ProcessarEstoqueFichaTec_MPrima(TList_FichaTec_MPrima val,
                                                                                decimal Qtd_batch,
                                                                                DateTime?Dt_estoque,
                                                                                bool St_decomposicao,
                                                                                BancoDados.TObjetoBanco banco)
        {
            bool st_transacao             = false;
            TCD_FichaTec_MPrima qtb_ficha = new TCD_FichaTec_MPrima();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_ficha.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_ficha.Banco_Dados = banco;
                }
                TList_Apontamento_Estoque lEstoque = new TList_Apontamento_Estoque();
                val.ForEach(p =>
                {
                    #region if produto composto e formula for nula
                    if ((new CamadaDados.Estoque.Cadastros.TCD_CadProduto(qtb_ficha.Banco_Dados).ProdutoComposto(p.Cd_produto)) && (p.Id_formulacao_mprima == null))
                    {
                        TRegistro_ApontamentoProducao rApontamento = new TRegistro_ApontamentoProducao();
                        rApontamento.Cd_empresa          = p.Cd_empresa;
                        rApontamento.Dt_apontamento      = Dt_estoque;
                        rApontamento.Dt_validade         = Dt_estoque;
                        rApontamento.Qtd_batch           = p.Qtd_produto * Qtd_batch;
                        rApontamento.LFormulaApontamento = new TList_FormulaApontamento()
                        {
                            TCN_FormulaApontamento.CriarFormulaApontamentoProd(p.Cd_empresa,
                                                                               p.Cd_produto,
                                                                               p.Cd_unidade,
                                                                               p.Cd_local,
                                                                               //St_decomposicao,
                                                                               qtb_ficha.Banco_Dados)
                        };
                        //Gravar Formula Apontamento
                        rApontamento.LFormulaApontamento.ForEach(x =>
                        {
                            x.St_decomposicao = St_decomposicao;
                            TCN_FormulaApontamento.Gravar(x, qtb_ficha.Banco_Dados);
                        });
                        //Calcular custo MPD
                        TCN_ApontamentoProducao.CalcularCustoMPD(rApontamento, qtb_ficha.Banco_Dados);
                        //Calcular custo fixo
                        TCN_ApontamentoProducao.CalcularCustoFixo(rApontamento, qtb_ficha.Banco_Dados);
                        //Chamar metodo Gravar Apontamento recursivamente
                        p.Id_apontamentomprima = Convert.ToDecimal(TCN_ApontamentoProducao.Gravar(rApontamento,
                                                                                                  qtb_ficha.Banco_Dados));
                    }
                    #endregion
                    #region else if formula diferente de nulll
                    else if (p.Id_formulacao_mprima != null)
                    {
                        //Buscar formula apontamento
                        TRegistro_ApontamentoProducao rApontamento = new TRegistro_ApontamentoProducao();
                        rApontamento.Cd_empresa          = p.Cd_empresa;
                        rApontamento.Dt_apontamento      = Dt_estoque;
                        rApontamento.Dt_validade         = Dt_estoque;
                        rApontamento.Qtd_batch           = p.Qtd_produto * Qtd_batch;
                        rApontamento.LFormulaApontamento = TCN_FormulaApontamento.Buscar(p.Cd_empresa,
                                                                                         p.Id_formulacao_mprimastr,
                                                                                         string.Empty,
                                                                                         string.Empty,
                                                                                         string.Empty,
                                                                                         string.Empty,
                                                                                         string.Empty,
                                                                                         0,
                                                                                         string.Empty,
                                                                                         qtb_ficha.Banco_Dados);
                        //Buscar ficha tecnica da formula
                        rApontamento.LFormulaApontamento[0].LFichaTec_MPrima =
                            TCN_FichaTec_MPrima.Buscar(p.Cd_empresa,
                                                       p.Id_formulacao_mprimastr,
                                                       string.Empty,
                                                       string.Empty,
                                                       string.Empty,
                                                       0,
                                                       string.Empty,
                                                       qtb_ficha.Banco_Dados);
                        //Buscar Custo
                        rApontamento.LFormulaApontamento[0].LCustoFixo =
                            TCN_CustoFixo_Direto.Buscar(p.Cd_empresa,
                                                        p.Id_formulacao_mprimastr,
                                                        string.Empty,
                                                        string.Empty,
                                                        string.Empty,
                                                        0,
                                                        string.Empty,
                                                        qtb_ficha.Banco_Dados);

                        rApontamento.Qtd_batch = Math.Round(p.Qtd_produto / TCN_CadConvUnidade.ConvertUnid(rApontamento.LFormulaApontamento[0].Cd_unidade,
                                                                                                           rApontamento.LFormulaApontamento[0].Cd_unidProduto,
                                                                                                           rApontamento.LFormulaApontamento[0].Qt_produto,
                                                                                                           3, qtb_ficha.Banco_Dados), 0);
                        //Calcular custo MPD
                        TCN_ApontamentoProducao.CalcularCustoMPD(rApontamento, qtb_ficha.Banco_Dados);
                        //Calcular custo fixo
                        TCN_ApontamentoProducao.CalcularCustoFixo(rApontamento, qtb_ficha.Banco_Dados);
                        //Chamar metodo Gravar Apontamento recursivamente
                        p.Id_apontamentomprima = Convert.ToDecimal(TCN_ApontamentoProducao.Gravar(rApontamento,
                                                                                                  qtb_ficha.Banco_Dados));
                    }
                    #endregion

                    //Gravar estoque
                    TRegistro_LanEstoque rEstoque = new TRegistro_LanEstoque();
                    rEstoque.Cd_empresa           = p.Cd_empresa;
                    rEstoque.Cd_local             = p.Cd_local;
                    rEstoque.Cd_produto           = p.Cd_produto;
                    rEstoque.Ds_observacao        = "ESTOQUE GRAVADO AUTOMATICAMENTE PELO APONTAMENTO DE PRODUCAO";
                    rEstoque.Dt_lancto            = Dt_estoque;
                    rEstoque.Tp_movimento         = !St_decomposicao ? "S" : "E";
                    rEstoque.Qtd_entrada          = St_decomposicao ? TCN_CadConvUnidade.ConvertUnid(p.Cd_unidade,
                                                                                                     p.Cd_unid_produto,
                                                                                                     p.Qtd_produto * Qtd_batch,
                                                                                                     3,
                                                                                                     qtb_ficha.Banco_Dados) : decimal.Zero;
                    rEstoque.Qtd_saida = !St_decomposicao ? TCN_CadConvUnidade.ConvertUnid(p.Cd_unidade,
                                                                                           p.Cd_unid_produto,
                                                                                           p.Qtd_produto * Qtd_batch,
                                                                                           3,
                                                                                           qtb_ficha.Banco_Dados) : decimal.Zero;
                    rEstoque.Vl_unitario = p.Vl_unitario;
                    rEstoque.Vl_subtotal = rEstoque.Vl_unitario * (St_decomposicao ? rEstoque.Qtd_entrada : rEstoque.Qtd_saida);
                    rEstoque.Tp_lancto   = "N";
                    TCN_LanEstoque.GravarEstoque(rEstoque, qtb_ficha.Banco_Dados);
                    lEstoque.Add(new TRegistro_Apontamento_Estoque()
                    {
                        Cd_empresa       = p.Cd_empresa,
                        Cd_produto       = p.Cd_produto,
                        Id_lanctoestoque = rEstoque.Id_lanctoestoque,
                        Vl_custocontabil = p.Vl_custo
                    });
                });
                if (st_transacao)
                {
                    qtb_ficha.Banco_Dados.Commit_Tran();
                }
                return(lEstoque);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_ficha.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_ficha.deletarBanco_Dados();
                }
            }
        }
Пример #5
0
        public static string Gravar2(TRegistro_ApontamentoProducao val,
                                     BancoDados.TObjetoBanco banco)
        {
            bool st_transacao = false;
            TCD_ApontamentoProducao qtb_ap = new TCD_ApontamentoProducao();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_ap.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_ap.Banco_Dados = banco;
                }
                //Gravar apontamento
                val.St_registro    = "1";
                val.Id_apontamento = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(qtb_ap.Gravar(val), "@P_ID_APONTAMENTO"));
                decimal custo = decimal.Zero;
                //Baixar estoque ficha tecnica
                TCN_Ordem_MPrima.Buscar(val.Id_ordemstr, qtb_ap.Banco_Dados)
                .ForEach(v =>
                {
                    //Incluir apontamento
                    TCN_Apontamento_MPrima.Gravar(
                        new TRegistro_Apontamento_MPrima
                    {
                        Id_apontamento = val.Id_apontamento.Value,
                        Cd_produto     = v.Cd_produto,
                        Cd_unidade     = v.Cd_unidade,
                        Cd_local       = v.Cd_local,
                        Qtd_produto    = v.Qtd_produto,
                        Pc_quebratec   = v.Pc_quebratec
                    }, qtb_ap.Banco_Dados);
                    //Gravar estoque
                    TRegistro_LanEstoque rEstoque = new TRegistro_LanEstoque();
                    rEstoque.Cd_empresa           = v.CD_Empresa;
                    rEstoque.Cd_local             = v.Cd_local;
                    rEstoque.Cd_produto           = v.Cd_produto;
                    rEstoque.Ds_observacao        = "ESTOQUE GRAVADO AUTOMATICAMENTE PELO APONTAMENTO DE PRODUCAO";
                    rEstoque.Dt_lancto            = val.Dt_apontamento;
                    rEstoque.Tp_movimento         = "S";
                    rEstoque.Qtd_entrada          = decimal.Zero;
                    rEstoque.Qtd_saida            = v.Qtd_produto;
                    rEstoque.Vl_unitario          = TCN_LanEstoque.BuscarVlEstoqueUltimaCompra(v.CD_Empresa, v.Cd_produto, qtb_ap.Banco_Dados);
                    rEstoque.Vl_subtotal          = v.Qtd_produto * rEstoque.Vl_unitario;
                    rEstoque.Tp_lancto            = "N";
                    custo += rEstoque.Vl_subtotal;
                    TCN_LanEstoque.GravarEstoque(rEstoque, qtb_ap.Banco_Dados);
                    //Apontamento x estoque
                    TCN_Apontamento_Estoque.GravarApontamentoEstoque(
                        new TRegistro_Apontamento_Estoque
                    {
                        Id_apontamento   = val.Id_apontamento,
                        Cd_empresa       = rEstoque.Cd_empresa,
                        Cd_produto       = rEstoque.Cd_produto,
                        Id_lanctoestoque = rEstoque.Id_lanctoestoque,
                        Vl_custocontabil = rEstoque.Vl_subtotal
                    }, qtb_ap.Banco_Dados);
                });
                //Dar entrada estoque produto acabado
                TRegistro_OrdemProducao rOrdem =
                    TCN_OrdemProducao.Buscar(val.Id_ordemstr,
                                             val.Cd_empresa,
                                             string.Empty,
                                             string.Empty,
                                             string.Empty,
                                             string.Empty,
                                             string.Empty,
                                             string.Empty,
                                             string.Empty,
                                             false,
                                             false,
                                             false,
                                             false,
                                             qtb_ap.Banco_Dados)[0];
                TRegistro_LanEstoque rEstAcab = new TRegistro_LanEstoque();
                rEstAcab.Cd_empresa    = rOrdem.Cd_empresa;
                rEstAcab.Cd_local      = rOrdem.Cd_local;
                rEstAcab.Cd_produto    = rOrdem.Cd_produto;
                rEstAcab.Ds_observacao = "ESTOQUE GRAVADO AUTOMATICAMENTE PELO APONTAMENTO DE PRODUCAO";
                rEstAcab.Dt_lancto     = val.Dt_apontamento;
                rEstAcab.Tp_movimento  = "E";
                rEstAcab.Qtd_entrada   = rOrdem.Qtd_saldoproduzir;
                rEstAcab.Qtd_saida     = decimal.Zero;
                rEstAcab.Vl_unitario   = Math.Round(decimal.Divide(custo, rOrdem.Qtd_saldoproduzir), 7, MidpointRounding.AwayFromZero);
                rEstAcab.Vl_subtotal   = custo;
                rEstAcab.Tp_lancto     = "N";
                TCN_LanEstoque.GravarEstoque(rEstAcab, qtb_ap.Banco_Dados);
                //Apontamento x estoque
                TCN_Apontamento_Estoque.GravarApontamentoEstoque(
                    new TRegistro_Apontamento_Estoque
                {
                    Id_apontamento   = val.Id_apontamento,
                    Cd_empresa       = rEstAcab.Cd_empresa,
                    Cd_produto       = rEstAcab.Cd_produto,
                    Id_lanctoestoque = rEstAcab.Id_lanctoestoque,
                    Vl_custocontabil = custo
                }, qtb_ap.Banco_Dados);
                //Gravar Ordem x Apontamento
                TCN_OrdemProducao_X_Apontamento.Gravar(
                    new TRegistro_OrdemProducao_X_Apontamento
                {
                    Id_apontamento = val.Id_apontamento,
                    Id_ordem       = val.Id_ordem
                }, qtb_ap.Banco_Dados);
                //Alterar status serie para P-Processada
                TCN_SerieProduto.Buscar(string.Empty,
                                        string.Empty,
                                        string.Empty,
                                        val.Id_ordemstr,
                                        qtb_ap.Banco_Dados)
                .ForEach(p => { p.St_registro = "P"; TCN_SerieProduto.Gravar(p, qtb_ap.Banco_Dados); });
                //Gravar custo total materia prima
                val.Vl_custo_mpd = custo;
                qtb_ap.Gravar(val);
                if (st_transacao)
                {
                    qtb_ap.Banco_Dados.Commit_Tran();
                }
                return(val.Id_apontamentostr);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_ap.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro gravar apontamento: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_ap.deletarBanco_Dados();
                }
            }
        }
Пример #6
0
        public static string GravaLanInsumos(TRegistro_LanInsumos val, TObjetoBanco banco)
        {
            bool           pode_liberar = false;
            TCD_LanInsumos lanInsumo    = new TCD_LanInsumos();

            try
            {
                if (banco == null)
                {
                    lanInsumo.CriarBanco_Dados(true);
                    pode_liberar = true;
                    banco        = lanInsumo.Banco_Dados;
                }
                else
                {
                    lanInsumo.Banco_Dados = banco;
                }

                string retorno = "";
                TRegistro_LanInsumos_X_Estoque InsumoEstoque = new TRegistro_LanInsumos_X_Estoque();

                if (val.ID_Requisicao <= 0 || val.ID_Requisicao == null)
                {
                    decimal saldo = 0;
                    TCN_LanEstoque.SaldoEstoqueLocal(val.CD_Empresa, val.CD_Produto, val.CD_Local, ref saldo, banco);

                    if (val.Quantidade > saldo)
                    {
                        throw new Exception("Atenção, não há SALDO suficiente desse PRODUTO no LOCAL DE ARMAZENAGEM!");
                    }

                    //GRAVA O LANÇAMENTO EM ESTOQUE
                    TRegistro_LanEstoque reg_estoque = new TRegistro_LanEstoque();

                    reg_estoque.Cd_produto    = val.CD_Produto;
                    reg_estoque.Cd_local      = val.CD_Local;
                    reg_estoque.Qtd_entrada   = 0;
                    reg_estoque.Qtd_saida     = val.Quantidade;
                    reg_estoque.Cd_empresa    = val.CD_Empresa;
                    reg_estoque.St_registro   = "A";
                    reg_estoque.Vl_unitario   = val.VL_Unitario;
                    reg_estoque.Vl_subtotal   = val.VL_Total;
                    reg_estoque.Tp_movimento  = "S";
                    reg_estoque.Ds_observacao = "LANÇAMENTO DE INSUMO CÓDIGO DO INSUMO - " + val.CD_Produto;
                    reg_estoque.Tp_lancto     = "N";

                    TCD_LanEstoque TCD_Estoque = new TCD_LanEstoque();
                    TCD_Estoque.Banco_Dados = banco;
                    string ret_estoque = TCD_Estoque.GravaEstoque(reg_estoque);
                    InsumoEstoque.Id_LanctoEstoque = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_estoque, "@@P_ID_LANCTOESTOQUE"));
                }
                else
                {
                    TpBusca[] filtro = new TpBusca[0];

                    Array.Resize(ref filtro, filtro.Length + 1);
                    filtro[0].vNM_Campo = "d.cd_EMPRESA";
                    filtro[0].vOperador = "=";
                    filtro[0].vVL_Busca = "'" + val.CD_Empresa + "'";

                    Array.Resize(ref filtro, filtro.Length + 1);
                    filtro[1].vNM_Campo = "a.cd_produto";
                    filtro[1].vOperador = "=";
                    filtro[1].vVL_Busca = "'" + val.CD_Produto + "'";

                    Array.Resize(ref filtro, filtro.Length + 1);
                    filtro[2].vNM_Campo = "E.ST_REGISTRO";
                    filtro[2].vOperador = "=";
                    filtro[2].vVL_Busca = "'A'";

                    DataTable TB_Local_Amx = null;//new TCD_Movimentacao().BuscarSaldo(filtro);
                    if ((TB_Local_Amx == null) || (TB_Local_Amx.Rows.Count == 0))
                    {
                        throw new Exception("O Almoxarifado não possui SALDO suficiente!");
                    }
                    else
                    {
                        if (val.Quantidade > Convert.ToDecimal(TB_Local_Amx.Rows[0]["Tot_Saldo"].ToString()))
                        {
                            throw new Exception("O Almoxarifado não possui SALDO suficiente!");
                        }
                    }

                    //BUSCA OS DADOS DE ENTREGA
                    TpBusca[] vBusca = new TpBusca[0];

                    Array.Resize(ref vBusca, vBusca.Length + 1);
                    vBusca[vBusca.Length - 1].vNM_Campo = "a.ID_Requisicao";
                    vBusca[vBusca.Length - 1].vOperador = "=";
                    vBusca[vBusca.Length - 1].vVL_Busca = val.ID_Requisicao.ToString();

                    Array.Resize(ref vBusca, vBusca.Length + 1);
                    vBusca[vBusca.Length - 1].vNM_Campo = "b.cd_produto";
                    vBusca[vBusca.Length - 1].vOperador = "=";
                    vBusca[vBusca.Length - 1].vVL_Busca = "'" + val.CD_Produto + "'";

                    //InsumoEstoque.Id_LanctoEstoque = Convert.ToDecimal(new TCD_LanEntregaRequisicao().BuscarEscalar(vBusca, "b.Id_LanctoEstoque").ToString());
                    //InsumoEstoque.Id_Entrega = Convert.ToDecimal(new TCD_LanEntregaRequisicao().BuscarEscalar(vBusca, "a.Id_Entrega").ToString());
                }

                if (InsumoEstoque.Id_LanctoEstoque > 0)
                {
                    //MANDA GRAVAR A INSUMO
                    val.ID_Lancto               = 0;
                    retorno                     = lanInsumo.GravaLanInsumos(val);
                    InsumoEstoque.Id_Lancto     = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@P_ID_LANCTO"));
                    InsumoEstoque.ID_LanctoAtiv = Convert.ToDecimal(val.ID_LanctoAtiv);
                    //GRAVA O LANÇAMENTO INSUMO X ESTOQUE
                    InsumoEstoque.Cd_Produto = val.CD_Produto;
                    InsumoEstoque.Cd_Empresa = val.CD_Empresa;

                    TCD_LanInsumos_X_Estoque TCD_InsumoEstoque = new TCD_LanInsumos_X_Estoque();
                    TCD_InsumoEstoque.Banco_Dados = banco;
                    TCD_InsumoEstoque.GravaLanInsumos_X_Estoque(InsumoEstoque);
                }
                else
                {
                    throw new Exception("Não foi possível lançar o estoque, por favor tente novamente!");
                }

                if (pode_liberar)
                {
                    lanInsumo.Banco_Dados.Commit_Tran();
                }
                return(retorno);
            }
            catch (Exception erro)
            {
                if (pode_liberar)
                {
                    lanInsumo.Banco_Dados.RollBack_Tran();
                }

                throw new Exception(erro.Message);
            }
            finally
            {
                if (pode_liberar)
                {
                    lanInsumo.deletarBanco_Dados();
                }
            }
        }
Пример #7
0
        public static string DeletaLanInsumos(TRegistro_LanInsumos val, TObjetoBanco banco)
        {
            bool           pode_liberar = false;
            TCD_LanInsumos lanInsumo    = new TCD_LanInsumos();

            try
            {
                if (banco == null)
                {
                    lanInsumo.CriarBanco_Dados(true);
                    pode_liberar = true;
                    banco        = lanInsumo.Banco_Dados;
                }
                else
                {
                    lanInsumo.Banco_Dados = banco;
                }

                string retorno = "";

                TlistLanInsumos_X_Estoque listaEstoque = TCN_LanInsumos_X_Estoque.Busca(val.CD_Empresa, val.CD_Produto, 0, Convert.ToDecimal(val.ID_Lancto), 0, Convert.ToDecimal(val.ID_LanctoAtiv));

                if (listaEstoque != null && listaEstoque.Count > 0)
                {
                    if (val.ID_Requisicao <= 0 || val.ID_Requisicao == null)
                    {
                        //GRAVA O LANÇAMENTO EM ESTOQUE
                        TRegistro_LanEstoque reg_estoque = new TRegistro_LanEstoque();

                        reg_estoque.Cd_produto       = val.CD_Produto;
                        reg_estoque.Cd_local         = val.CD_Local;
                        reg_estoque.Id_lanctoestoque = listaEstoque[0].Id_LanctoEstoque;
                        reg_estoque.Qtd_saida        = val.Quantidade;
                        reg_estoque.Cd_empresa       = val.CD_Empresa;
                        reg_estoque.St_registro      = "C";
                        reg_estoque.Tp_movimento     = "S";

                        TCD_LanEstoque TCD_Estoque = new TCD_LanEstoque();
                        TCD_Estoque.Banco_Dados = banco;
                        string ret_estoque = TCD_Estoque.DeletaEstoque(reg_estoque);
                    }


                    //MANDA GRAVAR A INSUMO
                    TRegistro_LanInsumos_X_Estoque InsumoEstoque = new TRegistro_LanInsumos_X_Estoque();
                    InsumoEstoque.Id_Lancto     = Convert.ToDecimal(val.ID_Lancto);
                    InsumoEstoque.ID_LanctoAtiv = Convert.ToDecimal(val.ID_LanctoAtiv);
                    //GRAVA O LANÇAMENTO INSUMO X ESTOQUE
                    InsumoEstoque.Cd_Produto       = val.CD_Produto;
                    InsumoEstoque.Cd_Empresa       = val.CD_Empresa;
                    InsumoEstoque.Id_LanctoEstoque = listaEstoque[0].Id_LanctoEstoque;

                    TCD_LanInsumos_X_Estoque TCD_InsumoEstoque = new TCD_LanInsumos_X_Estoque();
                    TCD_InsumoEstoque.Banco_Dados = banco;
                    TCD_InsumoEstoque.DeletaLanInsumos_X_Estoque(InsumoEstoque);

                    retorno = lanInsumo.DeletaLanInsumos(val);
                }
                else
                {
                    throw new Exception("Não foi possível remover o insumo, por favor tente novamente!");
                }

                if (pode_liberar)
                {
                    lanInsumo.Banco_Dados.Commit_Tran();
                }
                return(retorno);
            }
            catch (Exception erro)
            {
                if (pode_liberar)
                {
                    lanInsumo.Banco_Dados.RollBack_Tran();
                }

                throw new Exception(erro.Message);
            }
            finally
            {
                if (pode_liberar)
                {
                    lanInsumo.deletarBanco_Dados();
                }
            }
        }
Пример #8
0
        public static string DeletarEstoque(TRegistro_LanEstoque val, TObjetoBanco banco)
        {
            if (val.Cd_empresa.Trim().Equals(""))
            {
                throw new Exception("Campo Obrigatorio !\r\n" +
                                    "Campo: CD_Empresa\r\n" +
                                    "Método: DeletarEstoque\r\n" +
                                    "Classe: TCN_LanEstoque");
            }
            if (val.Cd_produto.Trim().Equals(""))
            {
                throw new Exception("Campo Obrigatorio !\r\n" +
                                    "Campo: CD_Produto\r\n" +
                                    "Método: DeletarEstoque\r\n" +
                                    "Classe: TCN_LanEstoque");
            }
            if (val.Id_lanctoestoque < 1)
            {
                throw new Exception("Campo Obrigatorio !\r\n" +
                                    "Campo: ID_LanctoEstoque\r\n" +
                                    "Método: DeletarEstoque\r\n" +
                                    "Classe: TCN_LanEstoque");
            }
            string         retorno      = string.Empty;
            bool           pode_liberar = false;
            TCD_LanEstoque qtb_estoque  = new TCD_LanEstoque();

            try
            {
                if (banco == null)
                {
                    pode_liberar = qtb_estoque.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_estoque.Banco_Dados = banco;
                }

                retorno = qtb_estoque.DeletaEstoque(val);
                if (pode_liberar)
                {
                    qtb_estoque.Banco_Dados.Commit_Tran();
                }
                return(retorno);
            }
            catch
            {
                if (pode_liberar)
                {
                    qtb_estoque.Banco_Dados.RollBack_Tran();
                }
                return(string.Empty);
            }
            finally
            {
                if (pode_liberar)
                {
                    qtb_estoque.deletarBanco_Dados();
                }
            }
        }
Пример #9
0
        public static string GravarEstoque(TRegistro_LanEstoque val, TObjetoBanco banco)
        {
            //Validar Campos obrigatorios para gravar estoque
            if (string.IsNullOrEmpty(val.Cd_empresa))
            {
                throw new Exception("Campo Obrigatorio !\r\n" +
                                    "Campo: CD_Empresa\r\n" +
                                    "Método: GravarEstoque\r\n" +
                                    "Classe: TCN_LanEstoque");
            }
            if (string.IsNullOrEmpty(val.Cd_produto))
            {
                throw new Exception("Campo Obrigatorio !\r\n" +
                                    "Campo: CD_Produto\r\n" +
                                    "Método: GravarEstoque\r\n" +
                                    "Classe: TCN_LanEstoque");
            }
            if (val.Dt_lancto.Equals(new DateTime()))
            {
                throw new Exception("Campo Obrigatorio !\r\n" +
                                    "Campo: DT_Lancto\r\n" +
                                    "Método: GravarEstoque\r\n" +
                                    "Classe: TCN_LanEstoque");
            }
            if (string.IsNullOrEmpty(val.Tp_movimento))
            {
                throw new Exception("Campo Obrigatorio !\r\n" +
                                    "Campo: TP_Movimento\r\n" +
                                    "Método: GravarEstoque\r\n" +
                                    "Classe: TCN_LanEstoque");
            }
            if (string.IsNullOrEmpty(val.Tp_lancto))
            {
                throw new Exception("Campo Obrigatorio !\r\n" +
                                    "Campo: TP_Lancto\r\n" +
                                    "Método: GravarEstoque\r\n" +
                                    "Classe: TCN_LanEstoque");
            }
            bool           pode_liberar = false;
            TCD_LanEstoque qtb_estoque  = new TCD_LanEstoque();

            try
            {
                if (banco == null)
                {
                    pode_liberar = qtb_estoque.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_estoque.Banco_Dados = banco;
                }
                //Gravar Estoque
                string retorno = string.Empty;
                if ((!new TCD_CadProduto(qtb_estoque.Banco_Dados).ItemServico(val.Cd_produto)) &&
                    (!new TCD_CadProduto(qtb_estoque.Banco_Dados).ProdutoConsumoInterno(val.Cd_produto)))
                {
                    if (val.Tp_movimento.Trim().Equals("S"))
                    {
                        decimal saldo = 0;
                        if (BloquearEstoqueNegativo(val.Cd_empresa, val.Cd_produto, val.Cd_local, val.Qtd_saida, ref saldo, qtb_estoque.Banco_Dados))
                        {
                            throw new Exception("Saldo insuficiente para baixar estoque do produto:\r\n" +
                                                val.Cd_produto + " - " + val.Ds_produto + "\r\n" +
                                                "No local de armazenagem: " + val.Cd_local.Trim() + "-" + val.Ds_local.Trim() + "\r\n" +
                                                "Saldo Disponivel: " + saldo.ToString("### ### ##0.000") + "\r\n" +
                                                "Saldo Requerido: " + val.Qtd_saida.ToString("### ### ##0.000") + "\r\n" +
                                                "Informe o Depto Contabil para lançamento  da provisão de estoque !");
                        }
                    }
                    retorno = qtb_estoque.GravaEstoque(val);
                    val.Id_lanctoestoque = decimal.Parse(CamadaDados.TDataQuery.getPubVariavel(retorno, "@@P_ID_LANCTOESTOQUE"));
                    //Gravar Lote Anvisa
                    val.lMovLoteAnvisa.ForEach(p =>
                    {
                        p.Id_lanctoestoque = val.Id_lanctoestoque;
                        Faturamento.LoteAnvisa.TCN_MovLoteAnvisa.Gravar(p, qtb_estoque.Banco_Dados);
                    });
                    //Gravar Grade
                    val.lGrade.ForEach(p => TCN_GradeEstoque.Gravar(new TRegistro_GradeEstoque()
                    {
                        Cd_empresa        = val.Cd_empresa,
                        Cd_produto        = val.Cd_produto,
                        Id_lanctoestoque  = val.Id_lanctoestoque,
                        Id_caracteristica = p.Id_caracteristica,
                        Id_item           = p.Id_item,
                        quantidade        = p.Vl_mov
                    }, qtb_estoque.Banco_Dados));
                    if (pode_liberar)
                    {
                        qtb_estoque.Banco_Dados.Commit_Tran();
                    }
                    return(retorno);
                }
                return(string.Empty);
            }
            catch (Exception ex)
            {
                if (pode_liberar)
                {
                    qtb_estoque.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro gravar estoque: " + ex.Message.Trim());
            }
            finally
            {
                if (pode_liberar)
                {
                    qtb_estoque.deletarBanco_Dados();
                }
            }
        }
Пример #10
0
        public static void ProcessarInventario(Tregistro_Inventario val, TObjetoBanco banco)
        {
            bool st_transacao = false;
            TCD_Inventario_Item_X_Saldo qtb_saldo = new TCD_Inventario_Item_X_Saldo();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_saldo.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_saldo.Banco_Dados = banco;
                }
                TList_Inventario_Item_X_Saldo lSaldo = TCN_Inventario_Item_X_Saldo.Buscar(val.Id_inventario.Value.ToString(),
                                                                                          string.Empty,
                                                                                          string.Empty,
                                                                                          string.Empty,
                                                                                          qtb_saldo.Banco_Dados);
                lSaldo.ForEach(p =>
                {
                    //Para produtos derivados de consumo interno
                    //O sistema deve gerar lançamento no almoxarifado
                    if (p.Id_Almox != null)
                    {
                        if (p.Qtd_saldoAmx != p.Qtd_contada)
                        {
                            p.Qtd_saldo = p.Qtd_saldoAmx;
                            CamadaDados.Almoxarifado.TRegistro_Movimentacao _Movimentacao = new CamadaDados.Almoxarifado.TRegistro_Movimentacao();
                            _Movimentacao.Cd_empresa      = p.Cd_empresa;
                            _Movimentacao.LoginAlmoxarife = Parametros.pubLogin;
                            _Movimentacao.Id_almoxstr     = p.Id_Almox.ToString();
                            _Movimentacao.Cd_produto      = p.Cd_produto;
                            _Movimentacao.Dt_movimento    = CamadaDados.UtilData.Data_Servidor();
                            if (p.Qtd_saldoAmx < p.Qtd_contada)
                            {
                                _Movimentacao.Tp_movimento  = "E";
                                _Movimentacao.Quantidade    = p.Qtd_contada - p.Qtd_saldoAmx;
                                _Movimentacao.Vl_subtotal   = p.Vl_unitario * (p.Qtd_contada - p.Qtd_saldoatual);
                                _Movimentacao.Ds_observacao = "ENTRADA DEVIDA AO INVENTÁRIO " + p.Id_inventario;
                            }
                            else
                            {
                                _Movimentacao.Tp_movimento  = "S";
                                _Movimentacao.Quantidade    = p.Qtd_saldoAmx - p.Qtd_contada;
                                _Movimentacao.Vl_subtotal   = p.Vl_unitario * (p.Qtd_saldoatual - p.Qtd_contada);
                                _Movimentacao.Ds_observacao = "SAÍDA DEVIDA AO INVENTÁRIO " + p.Id_inventario;
                            }

                            _Movimentacao.Vl_unitario = p.Vl_unitario;

                            string retorno = CamadaNegocio.Almoxarifado.TCN_Movimentacao.Gravar(_Movimentacao, qtb_saldo.Banco_Dados);
                            //Gravar Inventario X Almoxarifado
                            TCN_Inventario_X_Estoque.GravarInventarioXEstoque(
                                new TRegistro_Inventario_X_Estoque()
                            {
                                Cd_empresa        = p.Cd_empresa,
                                Cd_produto        = p.Cd_produto,
                                Id_inventario     = p.Id_inventario,
                                Id_movimentoAlmox = Convert.ToDecimal(retorno),
                                Id_registro       = p.Id_registro
                            }, qtb_saldo.Banco_Dados);
                        }
                    }
                    else
                    {
                        if (p.Qtd_saldoatual != p.Qtd_contada)
                        {
                            //Gravar no estoque
                            TRegistro_LanEstoque regEstoque = new TRegistro_LanEstoque();
                            regEstoque.Cd_empresa           = p.Cd_empresa;
                            regEstoque.Cd_produto           = p.Cd_produto;
                            regEstoque.Cd_local             = p.Cd_local;
                            regEstoque.Dt_lancto            = CamadaDados.UtilData.Data_Servidor();
                            regEstoque.St_registro          = "A";
                            regEstoque.Tp_lancto            = "I";
                            if (p.Qtd_saldoatual < p.Qtd_contada)
                            {
                                regEstoque.Tp_movimento = "E";
                                regEstoque.Qtd_entrada  = p.Qtd_contada - p.Qtd_saldoatual;
                                regEstoque.Vl_subtotal  = p.Vl_unitario * (p.Qtd_contada - p.Qtd_saldoatual);
                            }
                            else
                            {
                                regEstoque.Tp_movimento = "S";
                                regEstoque.Qtd_saida    = p.Qtd_saldoatual - p.Qtd_contada;
                                regEstoque.Vl_subtotal  = p.Vl_unitario * (p.Qtd_saldoatual - p.Qtd_contada);
                            }
                            regEstoque.Vl_unitario = p.Vl_unitario;

                            string retorno = TCN_LanEstoque.GravarEstoque(regEstoque, qtb_saldo.Banco_Dados);
                            //Gravar Inventario X Estoque
                            TCN_Inventario_X_Estoque.GravarInventarioXEstoque(
                                new TRegistro_Inventario_X_Estoque()
                            {
                                Cd_empresa       = p.Cd_empresa,
                                Cd_produto       = p.Cd_produto,
                                Id_inventario    = p.Id_inventario,
                                Id_registro      = p.Id_registro,
                                Id_lanctoestoque = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@@P_ID_LANCTOESTOQUE"))
                            }, qtb_saldo.Banco_Dados);
                        }
                    }

                    if (p.Id_Almox == null && p.Qtd_saldoatual != p.Qtd_saldo)
                    {
                        p.Qtd_saldo = p.Qtd_saldoatual;
                        TCN_Inventario_Item_X_Saldo.GravarInventarioItemSaldo(p, qtb_saldo.Banco_Dados);
                    }
                    else
                    {
                        TCN_Inventario_Item_X_Saldo.GravarInventarioItemSaldo(p, qtb_saldo.Banco_Dados);
                    }
                });
                //Alterar Status do Inventario para Processado
                val.St_inventario = "P";
                GravarInventario(val, qtb_saldo.Banco_Dados);
                if (st_transacao)
                {
                    qtb_saldo.Banco_Dados.Commit_Tran();
                }
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_saldo.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro processar inventario: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_saldo.deletarBanco_Dados();
                }
            }
        }