예제 #1
0
        public static string Gravar(TRegistro_FormulaApontamento val, BancoDados.TObjetoBanco banco)
        {
            bool st_transacao = false;
            TCD_FormulaApontamento qtb_formula = new TCD_FormulaApontamento();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_formula.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_formula.Banco_Dados = banco;
                }
                //Gravar Formula Apontamento
                val.Id_formulacao = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(qtb_formula.Gravar(val), "@P_ID_FORMULACAO"));
                //Deletar Ficha Tecnica MPrima
                val.LFichaTec_MPrimaDel.ForEach(p => TCN_FichaTec_MPrima.Excluir(p, qtb_formula.Banco_Dados));
                //Gravar Ficha Tecnica MPrima
                val.LFichaTec_MPrima.ForEach(p =>
                {
                    p.Cd_empresa    = val.Cd_empresa;
                    p.Id_formulacao = val.Id_formulacao;
                    TCN_FichaTec_MPrima.Gravar(p, qtb_formula.Banco_Dados);
                });
                //Deletar Custo Fixo Direto
                val.LCustoFixoDel.ForEach(p => TCN_CustoFixo_Direto.DeletarCustoFixo_Direto(p, qtb_formula.Banco_Dados));
                //Gravar Custo Fixo Direto
                val.LCustoFixo.ForEach(p =>
                {
                    p.Cd_empresa    = val.Cd_empresa;
                    p.Id_formulacao = val.Id_formulacao;
                    TCN_CustoFixo_Direto.GravarCustoFixo_Direto(p, qtb_formula.Banco_Dados);
                });
                if (st_transacao)
                {
                    qtb_formula.Banco_Dados.Commit_Tran();
                }
                return(val.Id_formulacaostr);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_formula.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro: " + ex.Message);
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_formula.deletarBanco_Dados();
                }
            }
        }
예제 #2
0
 public static void BuscarFormula(TRegistro_ApontamentoProducao val,
                                  BancoDados.TObjetoBanco banco)
 {
     if (val.Cd_empresa.Trim().Equals(string.Empty))
     {
         return;
     }
     else
     {
         TRegistro_FormulaApontamento rFormula = new TRegistro_FormulaApontamento();
         rFormula = Buscar(val.Cd_empresa,
                           val.Id_formulacaostr,
                           string.Empty,
                           string.Empty,
                           string.Empty,
                           string.Empty,
                           string.Empty,
                           1,
                           string.Empty,
                           banco)[0];
         //Buscar ficha tecnica materia-prima
         TCN_Ordem_MPrima.Buscar(val.Id_ordemstr, banco).ForEach(x =>
         {
             rFormula.LFichaTec_MPrima.Add(new TRegistro_FichaTec_MPrima
             {
                 Cd_empresa           = val.Cd_empresa,
                 Id_formulacao_mprima = x.ID_Formulacao_MPrima,
                 Cd_local             = x.Cd_local,
                 Cd_produto           = x.Cd_produto,
                 Ds_produto           = x.Ds_produto,
                 Cd_unidade           = x.Cd_unidade,
                 Ds_unidade           = x.Ds_unidade,
                 Cd_unid_produto      = x.Cd_unid_produto,
                 Pc_quebra_tec        = x.Pc_quebratec,
                 Qtd_produto          = x.Qtd_produto
             });
         });
         //Buscar custo fixo direto
         rFormula.LCustoFixo = TCN_CustoFixo_Direto.Buscar(val.Cd_empresa,
                                                           val.Id_formulacaostr,
                                                           string.Empty,
                                                           string.Empty,
                                                           string.Empty,
                                                           0,
                                                           string.Empty,
                                                           banco);
         val.LFormulaApontamento.Add(rFormula);
     }
 }
예제 #3
0
 public static decimal CalcularCustoProducao(TRegistro_FormulaApontamento val)
 {
     return(TCN_MPrima.MontarListaMPrima(val.Cd_empresa,
                                         val.Id_formulacaostr,
                                         1,
                                         null,
                                         null).Sum(p => p.Vl_custo) +
            TCN_CustoFixo_Direto.Buscar(val.Cd_empresa,
                                        val.Id_formulacaostr,
                                        string.Empty,
                                        string.Empty,
                                        string.Empty,
                                        0,
                                        string.Empty,
                                        null).Sum(p => p.Vl_custo));
 }
예제 #4
0
        public static string Excluir(TRegistro_FormulaApontamento val, BancoDados.TObjetoBanco banco)
        {
            bool st_transacao = false;
            TCD_FormulaApontamento qtb_formula = new TCD_FormulaApontamento();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_formula.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_formula.Banco_Dados = banco;
                }
                //Deletar custo fixo
                val.LCustoFixo.ForEach(p => TCN_CustoFixo_Direto.DeletarCustoFixo_Direto(p, qtb_formula.Banco_Dados));
                val.LCustoFixoDel.ForEach(p => TCN_CustoFixo_Direto.DeletarCustoFixo_Direto(p, qtb_formula.Banco_Dados));
                //Deletar Ficha Tecnica MPrima
                val.LFichaTec_MPrima.ForEach(p => TCN_FichaTec_MPrima.Excluir(p, qtb_formula.Banco_Dados));
                val.LFichaTec_MPrimaDel.ForEach(p => TCN_FichaTec_MPrima.Excluir(p, qtb_formula.Banco_Dados));
                //Deletar Formula Apontamento
                qtb_formula.Excluir(val);
                if (st_transacao)
                {
                    qtb_formula.Banco_Dados.Commit_Tran();
                }
                return("OK");
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_formula.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro: " + ex.Message);
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_formula.deletarBanco_Dados();
                }
            }
        }
예제 #5
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();
                }
            }
        }