public static string GravarLoteOS(TRegistro_LoteOS val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_LoteOS qtb_lote = new TCD_LoteOS(); try { if (banco == null) { st_transacao = qtb_lote.CriarBanco_Dados(true); } else { qtb_lote.Banco_Dados = banco; } //Gravar lote OS string retorno = qtb_lote.GravarLoteOS(val); val.Id_lote = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@P_ID_LOTE")); //Deletar Lote X Servicos val.lOsDel.ForEach(p => { TCN_Lote_X_Servicos.DeletarLote_X_Servicos(new TRegistro_Lote_X_Servicos() { Cd_empresa = val.Cd_empresa, Id_lote = val.Id_lote, Id_os = p.Id_os }, qtb_lote.Banco_Dados); }); //Gravar Lote X Servicos val.lOs.ForEach(p => { TCN_Lote_X_Servicos.GravarLote_X_Servicos(new TRegistro_Lote_X_Servicos() { Cd_empresa = val.Cd_empresa, Id_lote = val.Id_lote, Id_os = p.Id_os }, qtb_lote.Banco_Dados); }); if (st_transacao) { qtb_lote.Banco_Dados.Commit_Tran(); } return(retorno); } catch (Exception ex) { if (st_transacao) { qtb_lote.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_lote.deletarBanco_Dados(); } } }
public static string DeletarLoteOS(TRegistro_LoteOS val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_LoteOS qtb_lote = new TCD_LoteOS(); try { if (banco == null) { st_transacao = qtb_lote.CriarBanco_Dados(true); } else { qtb_lote.Banco_Dados = banco; } //Verificar se o lote ja se encontra processado if (val.St_registro.Trim().ToUpper().Equals("P")) { //Verificar se o pedido de remessa esta cancelado object obj = new CamadaDados.Faturamento.Pedido.TCD_Pedido().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_ose_lote x " + "where a.nr_pedido = x.nr_pedido " + "and x.nr_pedido = " + val.Nr_pedido.Value.ToString() + ")" }, new TpBusca() { vNM_Campo = "isnull(a.st_pedido, 'A')", vOperador = "<>", vVL_Busca = "'C'" } }, "NR_Pedido"); if (obj != null) { throw new Exception("Para cancelar o lote e necessario cancelar antes o pedido de remessa.\r\n" + "Pedido Remessa Nº " + obj.ToString().Trim()); } } //Deletar Lote X Servicos val.lOs.ForEach(p => { TCN_Lote_X_Servicos.DeletarLote_X_Servicos(new TRegistro_Lote_X_Servicos() { Cd_empresa = val.Cd_empresa, Id_lote = val.Id_lote, Id_os = p.Id_os }, qtb_lote.Banco_Dados); }); val.lOsDel.ForEach(p => { TCN_Lote_X_Servicos.DeletarLote_X_Servicos(new TRegistro_Lote_X_Servicos() { Cd_empresa = val.Cd_empresa, Id_lote = val.Id_lote, Id_os = p.Id_os }, qtb_lote.Banco_Dados); }); //Deletar Lote qtb_lote.DeletarLoteOS(val); if (st_transacao) { qtb_lote.Banco_Dados.Commit_Tran(); } return("OK"); } catch (Exception ex) { if (st_transacao) { qtb_lote.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro deletar lote: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_lote.deletarBanco_Dados(); } } }