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