void oFrmChave_DoOnOkClick(object sender, EventArgs e)
        {
            //consulta status do servidor
            ClientEnvironment manager = null;

            try
            {
                manager = Conexao.CreateManager(Program.ConAux);
                FuncaoAutomacao oFuncao = new FuncaoAutomacao(Program.empresaSelecionada, manager, Program.enviarInformacoesSobreErros);

                if (!oFuncao.ConsultaProcNFe(oFrmChave.TextResposta.Text))
                {
                    throw new Exception("Erro não mapeado. Verificar o LOG do sistema.");
                }
                else
                {
                    //arquivo de retorno estara em oParam.pastaRecibo + ChaveNFe + "-sit.xml",
                    ITRetConsSitNFe oRetConsSitNFe =
                        (ITRetConsSitNFe)XMLUtils.CarregaXML_HD(Program.GetParametro(Program.empresaSelecionada, manager).pastaRecibo + oFrmChave.TextResposta.Text + "-sit.xml",
                                                                oFuncao.oParam.versao,
                                                                "TRetConsSitNFe");

                    oFrmChave.Close();
                    oFrmChave.Dispose();

                    FrmVisualizaXML oFrmXML = new FrmVisualizaXML(XMLUtils.GetXML(oRetConsSitNFe, oFuncao.oParam.versao));
                    oFrmXML.ShowDialog();

                    oRetConsSitNFe = null;
                    oFuncao        = null;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                Conexao.DisposeManager(manager);
            }
        }
        void oFrm_DoOnOkEvtCanc_Click(object sender, EventArgs e)
        {
            ClientEnvironment manager = null;
            Parametro         oParam  = null;

            try
            {
                if (String.IsNullOrEmpty(oFrm.TextResposta.Text))
                {
                    throw new Exception("Motivo não foi informado.");
                }

                manager = Conexao.CreateManager(Program.ConAux);
                oParam  = Program.GetParametro(Program.empresaSelecionada, manager);


                //verificar se já existe algum evento desse tipo registrado para a NFe
                //verificar nSeqEvento
                int nSeqEvento = oNFe.CarregarEventos(manager)
                                 .Count(ev => ev.tpEvento == TEventoInfEventoTpEvento.Cancelamento &&
                                        (ev.codigoSituacao == TipoSituacaoEvento.FinalizadoAprovado135 ||
                                         ev.codigoSituacao == TipoSituacaoEvento.FinalizadoAprovado136 ||
                                         ev.codigoSituacao == TipoSituacaoEvento.FinalizadoAprovado155))
                                 + 1;

                var oEvento  = (ITEvento)XMLUtils.XMLFactory(oParam.versao, "TEvento");
                var oProtNFe = (ITProtNFe)XMLUtils.CarregaXML_STR(oNFe.xmlProcesso, oNFe.versao, "TProtNFe");

                //carregar dados do evento - Cancelamento
                oEvento.versao    = oParam.versaoDadosEventos;
                oEvento.infEvento = (ITEventoInfEvento)XMLUtils.XMLFactory(oParam.versao, "TEventoInfEvento");
                //“ID” + tpEvento + chave da NF-e + nSeqEvento
                oEvento.infEvento.Id = String.Format("ID110111{0}{1:00}", oProtNFe.infProt.chNFe, nSeqEvento);

                oEvento.infEvento.cOrgao = oParam.UF.ToCOrgaoIBGE();
                oEvento.infEvento.tpAmb  = oProtNFe.infProt.tpAmb;

                oEvento.infEvento.Item            = oNFe.chaveNota.Substring(9, 14);
                oEvento.infEvento.ItemElementName = ITCTypeCNPJCPF.CNPJ;
                oEvento.infEvento.chNFe           = oProtNFe.infProt.chNFe;

                //Data e hora do evento no formato AAAA-MM-DDThh:mm:ssTZD
                //(UTC - Universal Coordinated Time, onde TZD pode ser -02:00 (Fernando de Noronha),
                //-03:00 (Brasília) ou -04:00 (Manaus), no horário de verão serão -01:00, -02:00 e -03:00.
                //Ex.: 2010-08-19T13:00:15-03:00.
                oEvento.infEvento.dhEvento = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:sszzzz");

                oEvento.infEvento.tpEvento             = TEventoInfEventoTpEvento.Cancelamento.GetXmlEnumAttributeValueFromEnum();
                oEvento.infEvento.nSeqEvento           = nSeqEvento.ToString();
                oEvento.infEvento.verEvento            = TEventoInfEventoVerEvento.Item100;
                oEvento.infEvento.detEvento            = (ITEventoInfEventoDetEvento)XMLUtils.XMLFactory(oParam.versao, "TEventoInfEventoDetEvento");
                oEvento.infEvento.detEvento.descEvento = TEventoInfEventoDetEventoDescEvento.Cancelamento.GetXmlEnumAttributeValueFromEnum();
                oEvento.infEvento.detEvento.versao     = TEventoInfEventoDetEventoVersao.Item100;

                oEvento.infEvento.detEvento.nProt = oProtNFe.infProt.nProt;
                oEvento.infEvento.detEvento.xJust = oFrm.TextResposta.Text.Trim();
                oProtNFe = null;

                //salvar na caixa de entrada
                var date = DateTime.Now;
                XMLUtils.SalvaXML(oParam.pastaEntrada + "evtCanc_" + date.ToString("yyMMdd") + oParam.empresa + date.Ticks.ToString() + ".xml", oEvento, oParam.versao);

                String msgRet = "Pedido gerado com sucesso!";
                if (!Program.empresasHabilitadas.First(em => em.cnpj == Program.empresaSelecionada).AutomacaoHabilitada&& !Program.ServicoHabilitado)
                {
                    msgRet += " Automação esta desabilitada. Favor Iniciar Automação para enviar pedido.";
                }

                MessageBox.Show(msgRet);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                oFrm.Close();
                oFrm.Dispose();
                Conexao.DisposeManager(manager);
            }
        }
Exemplo n.º 3
0
        void oFrm_DoOnOkClick(object sender, EventArgs e)
        {
            ClientEnvironment manager = null;

            try
            {
                //FrmInfNRec oFrm = (FrmInfNRec)((Button)sender).Parent;
                String nRec = oFrm.TextResposta.Text;


                if (String.IsNullOrEmpty(nRec))
                {
                    throw new Exception("Informe o número do Recibo.");
                }

                manager = Conexao.CreateManager(Program.ConAux);

                ServicoPendente oServicoPendente = (ServicoPendente)ServicoPendenteDAL.Instance.Find(oSrv.keyString, manager);
                Parametro       oParam           = Program.GetParametro(oServicoPendente.empresa, manager);

                //criar o recibo no disco
                RDI.NFe2.SchemaXML.NFe_v200.TRetEnviNFe oRetEnviNFe = new RDI.NFe2.SchemaXML.NFe_v200.TRetEnviNFe();
                oRetEnviNFe.tpAmb    = oServicoPendente.tipoAmbiente;
                oRetEnviNFe.verAplic = "2.00";
                oRetEnviNFe.cUF      = oServicoPendente.UF;
                oRetEnviNFe.cStat    = "103";
                oRetEnviNFe.xMotivo  = "Lote recebido com sucesso";
                oRetEnviNFe.dhRecbto = DateTime.Now;
                oRetEnviNFe.infRec   = new RDI.NFe2.SchemaXML.NFe_v200.TRetEnviNFeInfRec();

                oRetEnviNFe.infRec.nRec = nRec;
                oRetEnviNFe.infRec.tMed = "1";
                XMLUtils.SaveXML(oParam.pastaRecibo + oServicoPendente.numeroLote.ToString() + "-rec.xml", oRetEnviNFe, oServicoPendente.versao);

                oServicoPendente.xmlRecibo = XMLUtils.GetXML(oRetEnviNFe, oServicoPendente.versao);

                oServicoPendente.numeroRecibo = nRec;

                oServicoPendente.dataSituacao   = DateTime.Now;
                oServicoPendente.codigoSituacao = TipoSituacaoServico.AguardandoRetornoAprovacao;
                //setar todas as notas desse servico como enviadas.

                NotaFiscalQry oNFeQry = new NotaFiscalQry();
                oNFeQry.empresa    = oServicoPendente.empresa;
                oNFeQry.numeroLote = oServicoPendente.numeroLote.ToString();

                //somente as que foram assinadas e inseridas no lote.
                oNFeQry.codigoSituacao = TipoSituacaoNota.Assinada;// "0";

                ArrayList notasProcessadas = NotaFiscalDAL.Instance.GetInstances(oNFeQry, manager);
                foreach (NotaFiscal oNFeProc in notasProcessadas)
                {
                    oNFeProc.codigoSituacao    = TipoSituacaoNota.Enviada;// 12; //Enviada
                    oNFeProc.descricaoSituacao = "Nota enviada";
                    oNFeProc.dataSituacao      = oServicoPendente.dataSituacao;
                    oNFeProc.Save(manager);

                    Log oLog = new Log();
                    oLog.codigoSituacao    = 13;
                    oLog.descricaoSituacao = "Nota Enviada";
                    oLog.nota           = new NotaFiscal();
                    oLog.nota.chaveNota = oNFeProc.chaveNota;
                    oLog.data           = DateTime.Now;
                    oLog.empresa        = oServicoPendente.empresa;
                    oLog.Save(manager);
                }
                oServicoPendente.Save(manager);

                Log oLogSrv = new Log();
                oLogSrv.codigoSituacao    = 998;
                oLogSrv.descricaoSituacao = "Recibo informado pelo usuario.";
                oLogSrv.nota           = new NotaFiscal();
                oLogSrv.nota.chaveNota = String.Empty;
                oLogSrv.data           = DateTime.Now;
                oLogSrv.empresa        = oServicoPendente.empresa;
                oLogSrv.Save(manager);

                MessageBox.Show("Lote atualizado com sucesso.");
                oFrm.Close();
                oFrm.Dispose();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                Conexao.DisposeManager(manager);
            }
        }