コード例 #1
0
        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();
                }
            }
        }