예제 #1
0
        public string ProcessaCancel(CancelNFCE cancel) //"F"|"J"
        {
            try
            {
                xmlData = new MakeXMLSAT(cancel, config);
                XmlDocument xmlSATImpressaoCancelamento = new XmlDocument();
                string fileCancel = String.Format("{0}{1}\\CFe{2}.xml", config.configMaquina.pathFiles, "\\enviados", cancel.chaveCancelamento);
                if (File.Exists(fileCancel))
                {   
                    xmlSATImpressaoCancelamento.Load(fileCancel);
                }
                else
                {
                    throw new Exception("Arquivo XML CFe Original não encontrado em: " + fileCancel);
                }

                string retorno;

                try
                {
                    retorno = gerenSAT.CancelarCFe(gerenSAT.generatorKey(), config.configSAT.ChaveAtivacao, "CFe" + cancel.chaveCancelamento, xmlData.xmlCancel.OuterXml); //TODO CONF
                    //retorno = SatDLL.CancelarCFe(SatDLL.generatorKey(), config.configSAT.ChaveAtivacao, "CFe" + cancel.chaveCancelamento, xmlData.xmlCancel.OuterXml); //TODO CONF
                }
                catch (Exception exceptionSATDll)
                {
                    throw new Exception("Erro enviando comando de Cancelamento de CFe " + exceptionSATDll.Message);
                }

                string[] tmpSplit = retorno.Split('|');

                if (tmpSplit[1].Equals("07000"))
                {

                    byte[] tmpByte = Convert.FromBase64String(tmpSplit[6]);

                    String notaRet = tmpByte.ToString();

                    notaRet = System.Text.Encoding.UTF8.GetString(tmpByte);

                    string xmlName = String.Format("{0}{1}\\{2}.xml", config.configMaquina.pathFiles, "\\enviados", tmpSplit[8]);

                    using (System.IO.StreamWriter sw = new System.IO.StreamWriter(xmlName))
                    {
                        sw.Write(notaRet);

                        sw.Flush();
                    }

                    XmlDocument xmlSATImpressao = new XmlDocument();
                    xmlSATImpressao.LoadXml(notaRet);

                    dadosQR = String.Format("{0}|{1}|{2}|{3}|{4}", tmpSplit[8].Substring(3), tmpSplit[7], tmpSplit[9], tmpSplit[10], tmpSplit[11]);
                    Impressao(xmlSATImpressao, xmlSATImpressaoCancelamento, TipoImpressao.Cancelamento, cancel.printer);

                   // dadosSatImp = new ImpressaoSAT(xmlSATImpressao, xmlSATImpressaoCancelamento, config, TipoImpressao.Cancelamento);

                   // ImprimirEpsonNF.ImprimirNF(cancel.printer, dadosSatImp.DadosImpressao1, dadosSatImp.DadosImpressao2, dadosQR, dadosSatImp.DadosQrCodeCancelamento, "", true, true);
                }
                else
                {
                    throw new Exception(String.Format("Erro processando SAT Cancelamento {0}{1}{2}{3}{4}", tmpSplit[1], tmpSplit[2], tmpSplit[3], tmpSplit[4], tmpSplit[5]));
                }


                return "SAT: Cancelamento Com sucesso";
            }
            catch (Exception ex)
            {
                throw new Exception("Erro processabdo Cancelamento " + ex.Message);
            }

        }
예제 #2
0
        public void ProcessaCupom(DadosSAT _dtSAT)
        {
            try
            {
                dtSAT = _dtSAT;

                xmlData = new MakeXMLSAT(dtSAT, config);

                string xmlName = String.Format("{0}{1}\\{2}.xml", config.configMaquina.pathFiles, "\\gerados", String.Format("{0}_{1}_{2}_{3}", dtSAT.WS_ID, dtSAT.Chk_Num, DateTime.Now.ToString("ddMMyyyy"), DateTime.Now.ToString("hhmmss")));

                xmlData.xmlDoc.Save(xmlName);

                Processa();
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }