public static void CalcularCustoMPD(TRegistro_ApontamentoProducao val, BancoDados.TObjetoBanco banco) { if (val != null) { if (val.Dt_apontamento != null) { if (val.LFormulaApontamento.Count > 0) { val.Vl_custo_mpd = CalcularCustoMPD(val.LFormulaApontamento[0].LFichaTec_MPrima, val.Dt_apontamentostr, val.Qtd_batch, banco); } } } }
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); } }
public static void CalcularCustoFixo(TRegistro_ApontamentoProducao val, BancoDados.TObjetoBanco banco) { if (val != null) { if (val.LFormulaApontamento.Count > 0) { val.LFormulaApontamento[0].LCustoFixo.ForEach(p => { if (p.Vl_custo > 0) { string moeda_padrao = TCN_CadParamGer.BuscaVL_String_Empresa("CD_MOEDA_PADRAO", val.Cd_empresa, banco); if (moeda_padrao.Trim().Equals(string.Empty)) { throw new Exception("Erro calcular custo fixo: falta configurar moeda padrão."); } if (p.Cd_moeda.Trim().Equals(moeda_padrao.Trim())) { p.Vl_custo_calculado = p.Vl_custo * val.Qtd_batch; } else if (val.Dt_apontamento != null) { decimal indice = decimal.Zero; p.Vl_custo_calculado = TCN_CotacaoMoeda.ConvertMoeda(p.Cd_moeda, moeda_padrao, val.Dt_apontamento.Value, false, p.Vl_custo, ref indice, banco) * val.Qtd_batch; p.Indice_monetario = indice; } } }); val.Vl_custo_fixodireto = val.LFormulaApontamento[0].LCustoFixo.Sum(p => p.Vl_custo_calculado); } } }
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(); } } }
public static string Deletar(TRegistro_ApontamentoProducao val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_ApontamentoProducao qtb_apontamento = new TCD_ApontamentoProducao(); try { if (banco == null) { st_transacao = qtb_apontamento.CriarBanco_Dados(true); } else { qtb_apontamento.Banco_Dados = banco; } //Excluir Apontamento MPrima val.lMPrimaApontamento.ForEach(p => TCN_Apontamento_MPrima.Excluir(p, qtb_apontamento.Banco_Dados)); val.LApontamentoEstoque.ForEach(p => //Excluir apontamento X Estoque //O metodo deletarapontamento ja vai cancelar os estoques correspondentes TCN_Apontamento_Estoque.DeletarApontamentoEstoque(p, qtb_apontamento.Banco_Dados)); //Excluir Apontamento Custo Fixo val.LCustoFixo.ForEach(p => TCN_Apontamento_CustoFixo.DeletarApontamentoCustoFixo(p, qtb_apontamento.Banco_Dados)); //Excluir Ordem Producao X Apontamento val.lOrdem.ForEach(p => TCN_OrdemProducao_X_Apontamento.Excluir( new TRegistro_OrdemProducao_X_Apontamento() { Id_apontamento = val.Id_apontamento, Id_ordem = p.Id_ordem }, qtb_apontamento.Banco_Dados) ); //Excluir Numero Serie val.lSerie.ForEach(p => { if (new CamadaDados.Faturamento.Pedido.TCD_ItensExpedicao(qtb_apontamento.Banco_Dados).BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.id_serie", vOperador = "=", vVL_Busca = p.Id_seriestr } }, "1") != null) { throw new Exception("Numero série <" + p.Nr_serie.Trim() + ">, ja foi utilizado no faturamento."); } TCN_SerieProduto.Excluir(p, qtb_apontamento.Banco_Dados); }); //Deletar apontamento producao qtb_apontamento.Deletar(val); if (st_transacao) { qtb_apontamento.Banco_Dados.Commit_Tran(); } return("OK"); } catch (Exception ex) { if (st_transacao) { qtb_apontamento.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro: " + ex.Message); } finally { if (st_transacao) { qtb_apontamento.deletarBanco_Dados(); } } }
public static void ProcessarEstoqueProdutoAcabado(TRegistro_ApontamentoProducao val, decimal Qtd_batch, decimal TotalCusto, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_ApontamentoProducao qtb_ficha = new TCD_ApontamentoProducao(); try { if (banco == null) { st_transacao = qtb_ficha.CriarBanco_Dados(true); } else { qtb_ficha.Banco_Dados = banco; } if ((!new CamadaDados.Estoque.Cadastros.TCD_CadProduto(qtb_ficha.Banco_Dados).ItemServico(val.LFormulaApontamento[0].Cd_produto)) && (!new CamadaDados.Estoque.Cadastros.TCD_CadProduto(qtb_ficha.Banco_Dados).ProdutoConsumoInterno(val.LFormulaApontamento[0].Cd_produto))) { //Entrada produto acabado no estoque CamadaDados.Estoque.TRegistro_LanEstoque rEstoque = new CamadaDados.Estoque.TRegistro_LanEstoque(); rEstoque.Cd_empresa = val.Cd_empresa; rEstoque.Cd_local = val.LFormulaApontamento[0].Cd_local; rEstoque.Cd_produto = val.LFormulaApontamento[0].Cd_produto; rEstoque.Ds_observacao = "ESTOQUE GRAVADO AUTOMATICAMENTE PELA PRODUCAO DO ITEM: " + val.LFormulaApontamento[0].Cd_produto.Trim(); rEstoque.Dt_lancto = val.Dt_apontamento; rEstoque.Qtd_entrada = !val.LFormulaApontamento[0].St_decomposicao ? TCN_CadConvUnidade.ConvertUnid(val.LFormulaApontamento[0].Cd_unidade, val.LFormulaApontamento[0].Cd_unidProduto, val.Qtd_batch * val.LFormulaApontamento[0].Qt_produto, 3, qtb_ficha.Banco_Dados) : decimal.Zero; rEstoque.Qtd_saida = val.LFormulaApontamento[0].St_decomposicao ? TCN_CadConvUnidade.ConvertUnid(val.LFormulaApontamento[0].Cd_unidade, val.LFormulaApontamento[0].Cd_unidProduto, val.Qtd_batch * val.LFormulaApontamento[0].Qt_produto, 3, qtb_ficha.Banco_Dados) : decimal.Zero; rEstoque.Tp_lancto = "N"; rEstoque.Tp_movimento = !val.LFormulaApontamento[0].St_decomposicao ? "E" : "S"; rEstoque.Vl_subtotal = TotalCusto; rEstoque.Vl_unitario = rEstoque.Vl_subtotal > 0?(rEstoque.Vl_subtotal / (val.LFormulaApontamento[0].St_decomposicao ? rEstoque.Qtd_saida : rEstoque.Qtd_entrada)):0; string ret_estoque = TCN_LanEstoque.GravarEstoque(rEstoque, qtb_ficha.Banco_Dados); val.LApontamentoEstoque.Add(new TRegistro_Apontamento_Estoque() { Cd_empresa = val.Cd_empresa, Cd_produto = val.LFormulaApontamento[0].Cd_produto, Id_lanctoestoque = rEstoque.Id_lanctoestoque, Vl_custocontabil = rEstoque.Vl_subtotal }); } if (st_transacao) { qtb_ficha.Banco_Dados.Commit_Tran(); } } 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(); } } }
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(); } } }
public static string Gravar(TRegistro_ApontamentoProducao val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_ApontamentoProducao qtb_apontamento = new TCD_ApontamentoProducao(); try { if (banco == null) { st_transacao = qtb_apontamento.CriarBanco_Dados(true); } else { qtb_apontamento.Banco_Dados = banco; } if (val.LFormulaApontamento.Count < 1) { throw new Exception("Erro: Não existe formula apontamento para processar apontamento produção."); } //Verificar custo fixo string moeda_padrao = TCN_CadParamGer.BuscaVL_String_Empresa("CD_MOEDA_PADRAO", val.Cd_empresa, qtb_apontamento.Banco_Dados); if (moeda_padrao.Trim().Equals(string.Empty)) { throw new Exception("Erro gravar apontamento produção: falta configurar moeda padrão para realizar calculo do custo fixo."); } //Gravar apontamento producao val.St_registro = "1"; val.Id_apontamento = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(qtb_apontamento.Gravar(val), "@P_ID_APONTAMENTO")); List <TRegistro_CustoFixo_Direto> lCustoMoeda = val.LFormulaApontamento[0].LCustoFixo.FindAll(p => p.Cd_moeda.Trim() != moeda_padrao.Trim()); lCustoMoeda.ForEach(p => { //Verificar se existe cotacao para este custo object obj = new TCD_CotacaoMoeda(qtb_apontamento.Banco_Dados).BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_moeda", vOperador = "=", vVL_Busca = "'" + p.Cd_moeda.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.cd_moedaresult", vOperador = "=", vVL_Busca = "'" + moeda_padrao.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.data", vOperador = "=", vVL_Busca = "'" + string.Format(new System.Globalization.CultureInfo("en-US", true), Convert.ToDateTime(val.Dt_apontamento.Value).ToString("yyyyMMdd")) + "'" } }, "1"); if (obj != null) { if (!obj.ToString().Equals("1")) { throw new Exception("Erro gravar apontamento produção: Não existe cotação para a moeda de origem " + p.Cd_moeda.Trim() + ", \r\n" + "moeda de destino " + moeda_padrao.Trim() + ", data de cotação " + val.Dt_apontamentostr.Trim()); } } else { throw new Exception("Erro gravar apontamento produção: Não existe cotação para a moeda de origem " + p.Cd_moeda.Trim() + ", \r\n" + "moeda de destino " + moeda_padrao.Trim() + ", data de cotação " + val.Dt_apontamentostr.Trim()); } }); CalcularCustoMPD(val, qtb_apontamento.Banco_Dados); //Processar estoque produto acabado ProcessarEstoqueProdutoAcabado(val, val.Qtd_batch, val.Vl_custo_mpd, qtb_apontamento.Banco_Dados); //Processar estoque materia-prima TCN_FichaTec_MPrima.ProcessarEstoqueFichaTec_MPrima(val.LFormulaApontamento[0].LFichaTec_MPrima, val.Qtd_batch, val.Dt_apontamento, val.LFormulaApontamento[0].St_decomposicao, qtb_apontamento.Banco_Dados).ForEach(p => val.LApontamentoEstoque.Add(p)); //Gravar apontamento X Estoque val.LApontamentoEstoque.ForEach(p => { p.Id_apontamento = val.Id_apontamento; TCN_Apontamento_Estoque.GravarApontamentoEstoque(p, qtb_apontamento.Banco_Dados); }); //Gravar apontamento X Custo Fixo val.LFormulaApontamento[0].LCustoFixo.ForEach(p => { TCN_Apontamento_CustoFixo.GravarApontamentoCustoFixo( new TRegistro_Apontamento_CustoFixo() { Id_apontamento = val.Id_apontamento, Id_custo = p.Id_custo, Vl_custo = p.Vl_custo_calculado, Indice_monetario = p.Indice_monetario }, qtb_apontamento.Banco_Dados); }); //Gravar Formula Materia Prima val.LFormulaApontamento[0].LFichaTec_MPrima.ForEach(p => TCN_Apontamento_MPrima.Gravar(new TRegistro_Apontamento_MPrima() { Id_apontamento = val.Id_apontamento.HasValue ? val.Id_apontamento.Value : decimal.Zero, Id_mprima = decimal.Zero, Cd_produto = p.Cd_produto, Cd_unidade = p.Cd_unidade, Cd_local = p.Cd_local, Qtd_produto = p.Qtd_produto, Pc_quebratec = p.Pc_quebra_tec, Id_apontamentomprima = p.Id_apontamentomprima }, qtb_apontamento.Banco_Dados)); if (val.Id_ordem != null) { //Gravar Apontamento X Ordem de Producao TCN_OrdemProducao_X_Apontamento.Gravar( new TRegistro_OrdemProducao_X_Apontamento() { Id_apontamento = val.Id_apontamento, Id_ordem = val.Id_ordem }, qtb_apontamento.Banco_Dados); } //Gravar Mov Rastreabilidade val.lMov.ForEach(p => { p.Cd_empresa = val.Cd_empresa; p.Id_apontamento = val.Id_apontamento; TCN_MovRastreabilidade.Gravar(p, qtb_apontamento.Banco_Dados); }); if (val.Id_ordem.HasValue) { //Buscar Nº Série TList_SerieProduto lSerie = new TCD_SerieProduto(qtb_apontamento.Banco_Dados).Select( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + val.Cd_empresa.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.id_ordem", vOperador = "=", vVL_Busca = val.Id_ordemstr } }, 0, string.Empty); //Processar Numero se Serie if (lSerie.Count > 0) { lSerie.ForEach(p => { p.St_registro = "P"; TCN_SerieProduto.Gravar(p, qtb_apontamento.Banco_Dados); }); } } if (st_transacao) { qtb_apontamento.Banco_Dados.Commit_Tran(); } return(val.Id_apontamentostr); } catch (Exception ex) { if (st_transacao) { qtb_apontamento.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro: " + ex.Message); } finally { if (st_transacao) { qtb_apontamento.deletarBanco_Dados(); } } }
public static string Excluir(TRegistro_Apontamento_MPrima val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_Apontamento_MPrima qtb_apont = new TCD_Apontamento_MPrima(); try { if (banco == null) { st_transacao = qtb_apont.CriarBanco_Dados(true); } else { qtb_apont.Banco_Dados = banco; } //Excluir materia prima qtb_apont.Excluir(val); //Verificar se era um subconjunto if (val.Id_apontamentomprima != null) { //Buscar apontamento materia prima TRegistro_ApontamentoProducao rApontamento = TCN_ApontamentoProducao.Buscar(val.Id_apontamentomprima.Value.ToString(), string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, 1, string.Empty, qtb_apont.Banco_Dados)[0]; rApontamento.LApontamentoEstoque = TCN_Apontamento_Estoque.Buscar(rApontamento.Id_apontamentostr, string.Empty, string.Empty, string.Empty, 0, string.Empty, qtb_apont.Banco_Dados); rApontamento.LCustoFixo = TCN_Apontamento_CustoFixo.Buscar(rApontamento.Id_apontamentostr, string.Empty, 0, string.Empty, qtb_apont.Banco_Dados); //Buscar Materia Prima Apontamento rApontamento.lMPrimaApontamento = Buscar(rApontamento.Id_apontamentostr, qtb_apont.Banco_Dados); //Buscar custo fixo apontamento rApontamento.LCustoFixo = TCN_Apontamento_CustoFixo.Buscar(rApontamento.Id_apontamentostr, string.Empty, 0, string.Empty, qtb_apont.Banco_Dados); //Chamar metodo excluir apontamento TCN_ApontamentoProducao.Deletar(rApontamento, qtb_apont.Banco_Dados); } if (st_transacao) { qtb_apont.Banco_Dados.Commit_Tran(); } return("OK"); } catch (Exception ex) { if (st_transacao) { qtb_apont.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro excluir materia prima apontamento: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_apont.deletarBanco_Dados(); } } }