Пример #1
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);
     }
 }
Пример #2
0
 private void bsOrdemProducao_PositionChanged(object sender, EventArgs e)
 {
     if (bsOrdemProducao.Current != null)
     {
         //Buscar Ficha Ordem
         (bsOrdemProducao.Current as TRegistro_OrdemProducao).lOrdem_MPrima =
             TCN_Ordem_MPrima.Buscar((bsOrdemProducao.Current as TRegistro_OrdemProducao).Id_ordem.Value.ToString(), null);
         //Buscar Apontamento Ordem
         (bsOrdemProducao.Current as TRegistro_OrdemProducao).lApontamento =
             TCN_OrdemProducao_X_Apontamento.BuscarApontamento((bsOrdemProducao.Current as TRegistro_OrdemProducao).Id_ordem.Value.ToString(), null);
         //Buscar Origem Pedido
         (bsOrdemProducao.Current as TRegistro_OrdemProducao).lItem =
             TCN_OrdemProducao_X_PedItem.BuscarItem((bsOrdemProducao.Current as TRegistro_OrdemProducao).Id_ordem.Value.ToString(), null);
         bsOrdemProducao.ResetCurrentItem();
     }
 }
Пример #3
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();
                }
            }
        }