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