private List <ENC> CabeceraENC(RFNCCAB model)
        {
            ENC        mENC      = new ENC();
            List <ENC> lmENC     = new List <ENC>();
            string     NombreXml = "";

            mENC.ENC_1 = "NC";
            mENC.ENC_4 = lmRFPARAM.Where(m => m.CCCODE == "ENC_4").SingleOrDefault().CCDESC;
            mENC.ENC_5 = lmRFPARAM.Where(m => m.CCCODE == "ENC_5").SingleOrDefault().CCDESC;

            NombreXml = model.FPREFIJ + model.FNOTA;
            mRFPARAM  = lmRFPARAM.Where(m => m.CCCODE == "PREFIJO" && m.CCCODE2 == model.FPREFIJ).SingleOrDefault();
            if (mRFPARAM != null)
            {
                if (mRFPARAM.CCCODEN != "0")
                {
                    NombreXml = mRFPARAM.CCALTC + (double.Parse(mRFPARAM.CCCODEN) + double.Parse(model.FNOTA));
                }
            }
            mENC.ENC_6  = NombreXml;
            mENC.ENC_7  = model.FFECNC;
            mENC.ENC_8  = model.FACRTDAT.ToString("HH:mm:ss");
            mENC.ENC_9  = "9";
            mENC.ENC_10 = model.FMONEDA;
            mENC.ENC_13 = model.FCLIENT;
            mENC.ENC_15 = model.TotLineas;
            mENC.ENC_16 = model.FFECVEN;

            lmENC.Add(mENC);

            return(lmENC);
        }
Beispiel #2
0
        public ActionResult Index()
        {
            if (SessionManager.Get <RCAU>("VarUsuario") == null)
            {
                return(RedirectToAction("Login", "Account", new { donde = Url.Action("Index", "Contrato") }));
            }
            List <MdlContrato> lmContrato = GetAllContratos();

            SessionManager.Set("DContratos", lmContrato);

            RFPARAM mRFPARAM = db.RFPARAM.Where(m => m.CCTABL == "CONTRATOSAVISO" && m.CCCODE == "DIAS" && m.CCCODE2 == "1").SingleOrDefault();

            if (mRFPARAM != null)
            {
                ViewBag.AvisoUno = mRFPARAM.CCNOT1;
            }
            else
            {
                ViewBag.AvisoUno = 0;
            }

            return(View());
        }
        private string DescargarNC(string Prefijo, string Nota)
        {
            lmRFPARAM = dRFPARAM.GetParams();
            string NombreXml = "", pref = "", res = "", xmlResp = "";
            string descarga     = "";
            string url          = lmRFPARAM.Where(m => m.CCCODE == "WSDL").SingleOrDefault().CCNOT1 + lmRFPARAM.Where(m => m.CCCODE == "WSDL").SingleOrDefault().CCNOT2;
            string credid       = lmRFPARAM.Where(m => m.CCCODE == "WSDLUSER").SingleOrDefault().CCNOT1;
            string credpassword = Sha256(lmRFPARAM.Where(m => m.CCCODE == "WSDLPASS").SingleOrDefault().CCNOT1);

            Prefijo = Prefijo ?? "DV";
            Nota    = Nota ?? "151574";

            NombreXml = Nota;
            pref      = Prefijo;
            mRFPARAM  = lmRFPARAM.Where(m => m.CCCODE == "PREFIJO" && m.CCCODE2 == Prefijo).SingleOrDefault();
            if (mRFPARAM != null)
            {
                if (mRFPARAM.CCCODEN != "0")
                {
                    pref      = mRFPARAM.CCALTC;
                    NombreXml = (double.Parse(mRFPARAM.CCCODEN) + double.Parse(Nota)).ToString();
                }
            }

            StringBuilder rawSOAP;

            using (var wb = new WebClient())
            {
                wb.Credentials = new NetworkCredential(credid, credpassword);

                for (var i = 0; i < 4; i++)
                {
                    try
                    {
                        rawSOAP = new StringBuilder();
                        rawSOAP.Append(BuildSoapHeader(credid, credpassword));
                        rawSOAP.Append(@"<soapenv:Body><inv:DownloadRequest>");
                        rawSOAP.Append(@"<documentType>NC</documentType>");
                        rawSOAP.AppendFormat(@"<documentNumber>{0}</documentNumber>", pref + NombreXml);
                        rawSOAP.AppendFormat(@"<documentPrefix>{0}</documentPrefix>", pref);
                        rawSOAP.Append(@"<resourceType>PDF</resourceType>");
                        rawSOAP.AppendFormat(@"<companyId>{0}</companyId>", lmRFPARAM.Where(m => m.CCCODE == "COMPANYID").SingleOrDefault().CCNOT1);
                        rawSOAP.AppendFormat(@"<accountId>{0}</accountId>", lmRFPARAM.Where(m => m.CCCODE == "ACCOUNTID").SingleOrDefault().CCNOT1);
                        rawSOAP.Append(@"</inv:DownloadRequest></soapenv:Body></soapenv:Envelope>");
                        descarga = wb.UploadString(url, "POST", rawSOAP.ToString());
                        var pdfbytes = Convert.FromBase64String(descarga.Substring((descarga.IndexOf("<downloadData>") + 14), (descarga.IndexOf("</downloadData>") - descarga.IndexOf("<downloadData>")) - 14));
                        //File.WriteAllBytes(@"C:\\Copia_Servidor\\Proyectos\\BRINSA\\BssFacturaElectronicaService\" + pref + NombreXml + ".pdf", pdfbytes);

                        File.WriteAllBytes(@"E:\\Despachos_DB2\\ImagenesTransportes\\pdf\\NCPDF\\" + pref + NombreXml + ".pdf", pdfbytes);
                        res = "OK";
                        Thread.Sleep(15000);
                    }
                    catch (WebException ex)
                    {
                        WebResponse errRsp = ex.Response;
                        using (StreamReader rdr = new StreamReader(errRsp.GetResponseStream()))
                        {
                            descarga = "ERROR: " + rdr.ReadToEnd();
                            Console.WriteLine(rdr.ReadToEnd());
                        }
                        res = descarga.Substring((descarga.IndexOf("<errorMessage>") + 14), (descarga.IndexOf("</errorMessage>") - descarga.IndexOf("<errorMessage>")) - 14);
                    }
                    catch (Exception ex)
                    {
                        descarga = "ERROR: " + ex.ToString();
                        res      = descarga;
                    }
                    if (res == "OK")
                    {
                        break;
                    }
                }

                if (descarga.Contains("ERROR"))
                {
                    var nRFLOG = new RFLOG()
                    {
                        OPERACION = "NCE",
                        EVENTO    = "ERROR DESCARGA",
                        TXTSQL    = descarga.Replace("'", "''"),
                        ALERT     = "0"
                    };
                    dRFLOG.Add(nRFLOG);
                }
                xmlResp = descarga.Substring((descarga.IndexOf("<soap:Envelope")), (descarga.IndexOf("</soap:Envelope>") - descarga.IndexOf("<soap:Envelope")) + 16);
                //logProceso.CapturaLog(xmlResp, pref + NombreXml + "_resp", "C:\\Copia_Servidor\\Proyectos\\BRINSA\\BssFacturaElectronicaService", "xml");
                logProceso.CapturaLog(xmlResp, pref + NombreXml + "_rdesc", "E:\\Sitios\\XMLNCE", "xml");
                //File.Copy("E:\\Despachos_DB2\\ImagenesTransportes\\pdf\\FacturaPDF2\\" + Prefijo + Factura.PadLeft(8, '0') + "_O.pdf", "E:\\Despachos_DB2\\ImagenesTransportes\\pdf\\FacturaPDF\\" + pref + NombreXml + "_O.pdf", true);

                if (res == "OK")
                {
                    dRFNCCAB.UpdNotaResPDF(Prefijo, Nota, "1");
                }
                else
                {
                    dRFNCCAB.UpdNotaResPDF(Prefijo, Nota, "-1");
                }
            }
            return(res);
        }
        private string EstadoNC(string TransId, string Prefijo, string Nota)
        {
            Prefijo   = Prefijo ?? "DV";
            Nota      = Nota ?? "151574";
            lmRFPARAM = dRFPARAM.GetParams();
            string Estado = "", res = "", xmlResp = "", NombreXml = "";
            string url          = lmRFPARAM.Where(m => m.CCCODE == "WSDL").SingleOrDefault().CCNOT1 + lmRFPARAM.Where(m => m.CCCODE == "WSDL").SingleOrDefault().CCNOT2;
            string credid       = lmRFPARAM.Where(m => m.CCCODE == "WSDLUSER").SingleOrDefault().CCNOT1;
            string credpassword = Sha256(lmRFPARAM.Where(m => m.CCCODE == "WSDLPASS").SingleOrDefault().CCNOT1);

            NombreXml = Prefijo + Nota;
            mRFPARAM  = lmRFPARAM.Where(m => m.CCCODE == "PREFIJO" && m.CCCODE2 == Prefijo).SingleOrDefault();
            if (mRFPARAM != null)
            {
                if (mRFPARAM.CCCODEN != "0")
                {
                    NombreXml = mRFPARAM.CCALTC + (double.Parse(mRFPARAM.CCCODEN) + double.Parse(Nota));
                }
            }

            StringBuilder rawSOAP;

            using (var wb = new WebClient())
            {
                wb.Credentials = new NetworkCredential(credid, credpassword);
                for (var i = 0; i < 4; i++)
                {
                    try
                    {
                        rawSOAP = new StringBuilder();
                        rawSOAP.Append(BuildSoapHeader(credid, credpassword));
                        rawSOAP.Append(@"<soapenv:Body><inv:DocumentStatusRequest>");
                        rawSOAP.AppendFormat(@"<transactionId>{0}</transactionId>", TransId);
                        rawSOAP.AppendFormat(@"<companyId>{0}</companyId>", lmRFPARAM.Where(m => m.CCCODE == "COMPANYID").SingleOrDefault().CCNOT1);
                        rawSOAP.AppendFormat(@"<accountId>{0}</accountId>", lmRFPARAM.Where(m => m.CCCODE == "ACCOUNTID").SingleOrDefault().CCNOT1);
                        rawSOAP.Append(@"</inv:DocumentStatusRequest></soapenv:Body></soapenv:Envelope>");
                        Estado = wb.UploadString(url, "POST", rawSOAP.ToString());
                        res    = "OK";
                        Thread.Sleep(5000);
                    }
                    catch (WebException ex)
                    {
                        WebResponse errRsp = ex.Response;
                        using (StreamReader rdr = new StreamReader(errRsp.GetResponseStream()))
                        {
                            Estado = "ERROR: " + rdr.ReadToEnd();
                            Console.WriteLine(rdr.ReadToEnd());
                        }
                        res = Estado.Substring((Estado.IndexOf("<errorMessage>") + 14), (Estado.IndexOf("</errorMessage>") - Estado.IndexOf("<errorMessage>")) - 14);
                    }
                    catch (Exception ex)
                    {
                        Estado = "ERROR: " + ex.ToString();
                        res    = Estado;
                    }
                    if (res == "OK")
                    {
                        break;
                    }
                }

                if (Estado.Contains("ERROR"))
                {
                    var nRFLOG = new RFLOG()
                    {
                        OPERACION = "NCE",
                        EVENTO    = "ERROR",
                        TXTSQL    = Estado.Replace("'", "''"),
                        ALERT     = "0"
                    };
                    dRFLOG.Add(nRFLOG);
                }

                xmlResp = Estado.Substring((Estado.IndexOf("<soap:Envelope")), (Estado.IndexOf("</soap:Envelope>") - Estado.IndexOf("<soap:Envelope")) + 16);
                //logProceso.CapturaLog(xmlResp, NombreXml + "_resp", "C:\\Copia_Servidor\\Proyectos\\BRINSA\\BssFacturaElectronicaService", "xml");
                logProceso.CapturaLog(xmlResp, NombreXml + "_sts", "E:\\Sitios\\XMLNCE", "xml");
            }
            return(res);
        }
        private string CargarNC(string Prefijo, string Nota)
        {
            string NombreXml = "", res = "", xml = "", xmlResp = "";

            Prefijo = Prefijo ?? "DV";
            Nota    = Nota ?? "151574";

            dESN.AddNotas(Prefijo, Nota);

            lmESN     = dESN.GetNotas(Prefijo, Nota);
            mRFNCCAB  = dRFNCCAB.Find(Prefijo, Nota);
            lmRFNCDET = dRFNCDET.Find(Prefijo, Nota);

            mRCO      = dRCO.GetCompany();
            lmRFPARAM = dRFPARAM.GetParams();
            NombreXml = Prefijo + Nota;
            mRFPARAM  = lmRFPARAM.Where(m => m.CCCODE == "PREFIJO" && m.CCCODE2 == Prefijo).SingleOrDefault();
            if (mRFPARAM != null)
            {
                if (mRFPARAM.CCCODEN != "0")
                {
                    NombreXml = mRFPARAM.CCALTC + (double.Parse(mRFPARAM.CCCODEN) + double.Parse(Nota));
                }
            }

            NOTA mNOTA = new NOTA
            {
                LMdlENC = CabeceraENC(mRFNCCAB),
                LMdlEMI = CabeceraEMI(mRFNCCAB),
                LMdlADQ = CabeceraADQ(mRFNCCAB),
                LMdlTOT = CabeceraTOT(mRFNCCAB),
                LMdlTIM = CabeceraTIM(mRFNCCAB),
                LMdlTDC = CabeceraTDC(mRFNCCAB),
                LMdlDRF = DetalleDRF(),
                LMdlNOT = DetalleNOT(),
                //LMdlORC = CabeceraORC(mRFNCCAB),
                LMdlREF = CabeceraREF(mRFNCCAB),
                LMdlIEN = CabeceraIEN(mRFNCCAB),
                LMdlITE = DetalleITE(mRFNCCAB, lmRFNCDET)
            };

            XmlSerializer xs = new XmlSerializer(typeof(NOTA));

            using (var sww = new StringWriter())
            {
                using (XmlWriter xwriter = XmlWriter.Create(sww))
                {
                    xs.Serialize(xwriter, mNOTA);
                    xml = sww.ToString();
                }
            }

            //TextWriter writer = new StreamWriter("C:\\Copia_Servidor\\Proyectos\\BRINSA\\BssFacturaElectronicaService\\" + NombreXml + ".xml");
            TextWriter writer = new StreamWriter("E:\\Sitios\\XMLNCE\\" + NombreXml + ".xml");

            xs.Serialize(writer, mNOTA);
            writer.Close();

            string Cargue       = "";
            string url          = lmRFPARAM.Where(m => m.CCCODE == "WSDL").SingleOrDefault().CCNOT1 + lmRFPARAM.Where(m => m.CCCODE == "WSDL").SingleOrDefault().CCNOT2;
            string credid       = lmRFPARAM.Where(m => m.CCCODE == "WSDLUSER").SingleOrDefault().CCNOT1;
            string credpassword = Sha256(lmRFPARAM.Where(m => m.CCCODE == "WSDLPASS").SingleOrDefault().CCNOT1);

            StringBuilder rawSOAP;

            using (var wb = new WebClient())
            {
                wb.Credentials = new NetworkCredential(credid, credpassword);

                for (var i = 0; i < 4; i++)
                {
                    try
                    {
                        rawSOAP = new StringBuilder();
                        rawSOAP.Append(BuildSoapHeader(credid, credpassword));
                        rawSOAP.Append(@"<soapenv:Body><inv:UploadRequest>");
                        rawSOAP.AppendFormat(@"<fileName>{0}.xml</fileName>", NombreXml);
                        rawSOAP.AppendFormat(@"<fileData>{0}</fileData>", Convert.ToBase64String(Encoding.UTF8.GetBytes(xml)));
                        rawSOAP.AppendFormat(@"<companyId>{0}</companyId>", lmRFPARAM.Where(m => m.CCCODE == "COMPANYID").SingleOrDefault().CCNOT1);
                        rawSOAP.AppendFormat(@"<accountId>{0}</accountId>", lmRFPARAM.Where(m => m.CCCODE == "ACCOUNTID").SingleOrDefault().CCNOT1);
                        rawSOAP.Append(@"</inv:UploadRequest></soapenv:Body></soapenv:Envelope>");
                        Cargue = wb.UploadString(url, "POST", rawSOAP.ToString());
                        Thread.Sleep(5000);
                    }
                    catch (WebException ex)
                    {
                        WebResponse errRsp = ex.Response;
                        using (StreamReader rdr = new StreamReader(errRsp.GetResponseStream()))
                        {
                            Cargue = "ERROR: " + rdr.ReadToEnd();
                            Console.WriteLine(rdr.ReadToEnd());
                        }
                        res = Cargue.Substring((Cargue.IndexOf("<errorMessage>") + 14), (Cargue.IndexOf("</errorMessage>") - Cargue.IndexOf("<errorMessage>")) - 14);
                    }
                    catch (Exception ex)
                    {
                        Cargue = "ERROR: " + ex.ToString();
                        res    = Cargue;
                    }
                    if (Cargue.Contains("<transactionId>"))
                    {
                        break;
                    }
                }
                res = dRFNCCAB.UpdNotaIdNme(Prefijo, Nota, Cargue.Substring((Cargue.IndexOf("<transactionId>") + 15), (Cargue.IndexOf("</transactionId>") - Cargue.IndexOf("<transactionId>")) - 15), NombreXml);
                if (res == "OK")
                {
                    Thread.Sleep(5000);
                    res = EstadoNC(Cargue.Substring((Cargue.IndexOf("<transactionId>") + 15), (Cargue.IndexOf("</transactionId>") - Cargue.IndexOf("<transactionId>")) - 15), Prefijo, Nota);
                    res = DescargarNC(Prefijo, Nota);
                }

                if (Cargue.Contains("ERROR"))
                {
                    var nRFLOG = new RFLOG()
                    {
                        OPERACION = "NCE",
                        EVENTO    = "ERROR",
                        TXTSQL    = Cargue.Replace("'", "''"),
                        ALERT     = "0"
                    };
                    dRFLOG.Add(nRFLOG);
                }

                xmlResp = Cargue.Substring((Cargue.IndexOf("<soap:Envelope")), (Cargue.IndexOf("</soap:Envelope>") - Cargue.IndexOf("<soap:Envelope")) + 16);
                //logProceso.CapturaLog(xmlResp, NombreXml + "_resp", "C:\\Copia_Servidor\\Proyectos\\BRINSA\\BssFacturaElectronicaService", "xml");
                logProceso.CapturaLog(xmlResp, NombreXml + "_resp", "E:\\Sitios\\XMLNCE", "xml");
            }
            return(res);
        }