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 void EstornarProcessamentoLoteOS(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 pedido amarrado ao lote nao 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 x.nr_pedido = a.nr_pedido " + "and x.cd_empresa = '" + val.Cd_empresa.Trim() + "' " + "and x.id_lote = " + val.Id_lotestr + ")" }, new TpBusca() { vNM_Campo = "isnull(a.st_registro, 'A')", vOperador = "<>", vVL_Busca = "'C'" }, new TpBusca() { vNM_Campo = "isnull(a.st_pedido, 'A')", vOperador = "<>", vVL_Busca = "'C'" } }, "a.nr_pedido"); if (obj != null) { throw new Exception("Para estornar processamento do lote é necessario cancelar antes o pedido " + obj.ToString() + "."); } //Voltar status do lote para A - Aberto val.St_registro = "A"; qtb_lote.GravarLoteOS(val); if (st_transacao) { qtb_lote.Banco_Dados.Commit_Tran(); } } catch (Exception ex) { if (st_transacao) { qtb_lote.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro estornar processamento lote: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_lote.deletarBanco_Dados(); } } }