Esempio n. 1
0
        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();
                }
            }
        }
Esempio n. 2
0
        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();
                }
            }
        }