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