public static MyCustomModel ConvertToMyCustomModel(this MyCustomModel model, WebServiceModel wsModel)
    {
        var newModel = new MyCustomModel {
            Id = wsModel.Id, SomeValue = wsModel.SomeValue
        };

        return(newModel);
    }
        public ActionResult ReenviarNegocio(int idNegocio)
        {
            WebServiceModel wsOp = new WebServiceModel();

            wsOp.updateFacturaEstadoReenvio(idNegocio);

            decimal usuario = wsOp.obtenerNoUsuario(idNegocio);
            string  rutaXML = CrearXML.CrearXMLFile(idNegocio);

            if (System.IO.File.Exists(rutaXML))
            {
                Thread t = new Thread(() => new WebServiceController().llamadoWebService(rutaXML, usuario.ToString(), idNegocio.ToString()));
                t.Start();
            }

            var grilla = _grillaWsResultado();

            return(View(new GridModel <grillaResultado>(grilla)));
        }
        //[WebMethod]
        public ActionResult ObtenerDListas(int idCampo)
        {
            WebServiceModel     s        = new WebServiceModel();
            List <CodigosCampo> listaCod = s.consultarOpcionesLista(idCampo);

            string DescCampos = "";

            for (int i = 0; i < listaCod.Count; i++)
            {
                if (DescCampos.Trim() == "")
                {
                    DescCampos = listaCod[i].CodDescripcion.ToString();
                }
                else
                {
                    DescCampos = DescCampos + "," + listaCod[i].CodDescripcion.ToString();
                }
            }
            ViewData["data"] = DescCampos;
            return(View());
        }
Beispiel #4
0
        public string guardarResultadoSAP(string resultadoSAP, string usuario, string negID)
        {
            try
            {
                string ArchivoXml     = resultadoSAP;
                string resultadoRCODE = "";

                //*****************************************************************
                XmlDocument xml = new XmlDocument();
                xml.LoadXml(ArchivoXml);

                XmlNamespaceManager ns = new XmlNamespaceManager(xml.NameTable);
                ns.AddNamespace("soap-env", "http://schemas.xmlsoap.org/soap/envelope/");
                ns.AddNamespace("n0", "urn:sap-com:document:sap:rfc:functions");

                List <WS_RESULTADO> listaResultado = new List <WS_RESULTADO>();
                XmlNodeList         xnLista        = xml.SelectNodes("/soap-env:Envelope/soap-env:Body/n0:YCONSOLA_CARGA_WSResponse/IT_RESULTADO/item", ns);
                foreach (XmlNode item in xnLista)
                {
                    WS_RESULTADO datosResultado = new WS_RESULTADO
                    {
                        NEG_ID_CABECERA = Convert.ToDecimal(negID),
                        OK_CODE         = item["OK_CODE"].InnerText,
                        DESCRIPTION     = item["DESCRIPCION"].InnerText,
                        FECHA_RESPUESTA = DateTime.Now
                    };

                    XmlNodeList xnLista2 = xml.SelectNodes("/soap-env:Envelope/soap-env:Body/n0:YCONSOLA_CARGA_WSResponse", ns);
                    foreach (XmlNode item2 in xnLista2)
                    {
                        datosResultado.RCODE = item2["RCODE"].InnerText;
                        resultadoRCODE       = item2["RCODE"].InnerText;
                    }
                    listaResultado.Add(datosResultado);
                }
                //*****************************************************************

                //Instancia para guardar el resultado
                GestorDocumentalEnt data = new GestorDocumentalEnt();
                //Realizar el insert a la tabla de resultados.
                for (int i = 0; i < listaResultado.Count; i++)
                {
                    WS_RESULTADO dataResultado = new WS_RESULTADO
                    {
                        NEG_ID_CABECERA = listaResultado[i].NEG_ID_CABECERA,
                        RCODE           = listaResultado[i].RCODE,
                        OK_CODE         = listaResultado[i].OK_CODE,
                        DESCRIPTION     = listaResultado[i].DESCRIPTION,
                        FECHA_RESPUESTA = listaResultado[i].FECHA_RESPUESTA
                    };

                    data.AddToWS_RESULTADO(dataResultado);
                    data.SaveChanges();
                }

                WebServiceModel wsOp = new WebServiceModel();
                bool            resultadoValidacion = wsOp.validaAsignacionTareas(Convert.ToInt32(negID), 60);

                string resultadoFinal = "";
                switch (resultadoRCODE)
                {
                //Cuando es Cero(0), Significa que la factura ser guardo correctamente en SAP
                case "0":
                    if (resultadoValidacion)
                    {
                        wsOp.updateAsignacionTareas(1, Convert.ToInt32(negID), Convert.ToInt32(usuario), 60);
                        resultadoFinal = "La factura ha sido transmitida correctamente a SAP";
                    }
                    else
                    {
                        AsignacionTareas dataAsignacionOK = new AsignacionTareas
                        {
                            NegId           = Convert.ToDecimal(negID),
                            IdEtapa         = 60,
                            Usuario         = Convert.ToDecimal(usuario),
                            HoraInicio      = DateTime.Now,
                            HoraTerminacion = DateTime.Now,
                            IdEstado        = 30
                        };

                        data.AddToAsignacionTareas(dataAsignacionOK);
                        data.SaveChanges();

                        resultadoFinal = "La factura ha sido transmitida correctamente a SAP";
                    }
                    break;

                //Cuando el Noventa y Nueve(99), Significa que la factura no se guardo correctamente y arrojo errores.
                case "99":
                    if (resultadoValidacion)
                    {
                        wsOp.updateAsignacionTareas(2, Convert.ToInt32(negID), Convert.ToInt32(usuario), 60);
                        resultadoFinal = "La factura no ha sido transmitida correctamente a SAP";
                    }
                    else
                    {
                        AsignacionTareas dataAsignacionError = new AsignacionTareas
                        {
                            NegId           = Convert.ToDecimal(negID),
                            IdEtapa         = 60,
                            Usuario         = Convert.ToDecimal(usuario),
                            HoraInicio      = DateTime.Now,
                            HoraTerminacion = DateTime.Now,
                            IdEstado        = 141
                        };

                        data.AddToAsignacionTareas(dataAsignacionError);
                        data.SaveChanges();
                        resultadoFinal = "La factura no ha sido transmitida correctamente a SAP";
                    }
                    break;
                }

                return(resultadoFinal);
            }
            catch (Exception e)
            {
                LogRepository.registro("Error en TransmicionXMLController metodo guardarResultadoSAP " + e.Message + " stack trace " + e.StackTrace);
                throw e;
            }
        }
        public static string CrearXMLFile(int negID)
        {
            try
            {
                string          rutaFinalArchivo = "";
                WebServiceModel ws = new WebServiceModel();

                List <DatosEntrada>       Y_ConsoltaFactura = new List <DatosEntrada>();
                List <Factura_cabecera>   facturaCabecera   = new List <Factura_cabecera>();
                List <Factura_posiciones> facturaPosiciones = new List <Factura_posiciones>();
                List <Factura_impuestos>  facturaImpuestos  = new List <Factura_impuestos>();

                int    cont          = 0;
                string nombreFactura = "";

                Y_ConsoltaFactura = ws.obtenerDatosEntrada(negID);
                foreach (DatosEntrada datos in Y_ConsoltaFactura)
                {
                    facturaCabecera   = ws.obtenerDatosFacturaCabecera(datos.id_neg_cabecera);
                    facturaPosiciones = ws.obtenerDatosFacturaPosiciones(datos.id_neg_cabecera);
                    facturaImpuestos  = ws.obtenerDatosFacturaImpuestos(datos.id_neg_cabecera);

                    XElement FacturaXML = new XElement("YCONSOLA_CARGA_WS",
                                                       new XAttribute(XNamespace.Xmlns + "n0", "urn:sap-com:document:sap:rfc:functions"));

                    for (int i = 0; i < 1; i++)
                    {
                        XElement accion = new XElement("Accion".ToUpper(), Y_ConsoltaFactura[cont].accion.Trim());
                        FacturaXML.Add(accion);

                        for (int a = 0; a < facturaCabecera.Count; a++)
                        {
                            string fecha = string.Format("{0:yyyy-MM-dd}", facturaCabecera[a].doc_date);

                            XElement FactCabecera;

                            FactCabecera = new XElement("Factura_cabecera".ToUpper(),
                                                        new XElement("Fact_id".ToUpper(), formateaEtiqueta(facturaCabecera[a].fac_id.Trim())),
                                                        new XElement("doc_type".ToUpper(), formateaEtiqueta(facturaCabecera[a].doc_type.Trim())),
                                                        new XElement("doc_number".ToUpper(), formateaEtiqueta(facturaCabecera[a].doc_number.Trim())),
                                                        new XElement("doc_date".ToUpper(), formateaEtiqueta(fecha)),
                                                        new XElement("vendor_rfc".ToUpper(), formateaEtiqueta(facturaCabecera[a].vendor_rfc.Trim())),
                                                        new XElement("company_rfc".ToUpper(), formateaEtiqueta(facturaCabecera[a].company_rfc.Trim())),
                                                        new XElement("total_amount".ToUpper(), facturaCabecera[a].total_amount),
                                                        new XElement("currency_code".ToUpper(), formateaEtiqueta(facturaCabecera[a].currency_code.Trim())),
                                                        formateaEtiqueta(facturaCabecera[a].employee_number.ToString()) == null ? new XElement("employee_number".ToUpper()) : new XElement("employee_number".ToUpper(), facturaCabecera[a].employee_number),
                                                        formateaEtiqueta(facturaCabecera[a].purchase_order.Trim()) == null ? new XElement("purchase_order".ToUpper()) : new XElement("purchase_order".ToUpper(), facturaCabecera[a].purchase_order.Trim()),
                                                        formateaEtiqueta(facturaCabecera[a].discount_amount.ToString()) == null ? new XElement("discount_amount".ToUpper()) : new XElement("discount_amount".ToUpper(), facturaCabecera[a].discount_amount),
                                                        formateaEtiqueta(facturaCabecera[a].withholding_tax.ToString()) == null ? new XElement("witholding_tax".ToUpper()) : new XElement("witholding_tax".ToUpper(), facturaCabecera[a].withholding_tax),
                                                        formateaEtiqueta(facturaCabecera[a].advance_flag) == null ? new XElement("advance_flag".ToUpper()) : new XElement("advance_flag".ToUpper(), formateaEtiqueta(facturaCabecera[a].advance_flag.Trim())),
                                                        //NUEVA ETIQUETA PARA EL CAMBIO DE COSTARICA Y PANAMA.
                                                        formateaEtiqueta(facturaCabecera[a].fiscal_doc_number) == null ? new XElement("fiscal_doc_number".ToUpper()) : new XElement("fiscal_doc_number".ToUpper(), formateaEtiqueta(facturaCabecera[a].fiscal_doc_number.Trim())));
                            FacturaXML.Add(FactCabecera);

                            nombreFactura = facturaCabecera[a].fac_id.Trim();
                        }

                        XElement FactImpuestos = new XElement("Factura_impuestos".ToUpper());
                        for (int s = 0; s < facturaImpuestos.Count; s++)
                        {
                            XElement itemsFactImpuestos = new XElement("item",
                                                                       new XElement("vat_base_amount".ToUpper(), facturaImpuestos[s].vat_base_amount),
                                                                       new XElement("vat_percentage".ToUpper(), facturaImpuestos[s].vat_percentage),
                                                                       new XElement("vat_tax_amount".ToUpper(), facturaImpuestos[s].vat_tax_amount),
                                                                       formateaEtiqueta(facturaImpuestos[s].vat_tax_id) == null ? new XElement("vat_tax_id".ToUpper().Trim()) : new XElement("vat_tax_id".ToUpper().Trim(), formateaEtiqueta(facturaImpuestos[s].vat_tax_id))
                                                                       );

                            FactImpuestos.Add(itemsFactImpuestos);
                        }
                        FacturaXML.Add(FactImpuestos);

                        #region Convertir el archivo PDF a un string Base64
                        byte[] archivoPDF = convertirArchivo(Y_ConsoltaFactura[cont].facturaPDFBase64);

                        string hex = "";
                        if (archivoPDF != null)
                        {
                            hex = Convert.ToBase64String(archivoPDF);
                        }

                        string nombreArchivo    = "@" + Y_ConsoltaFactura[cont].facturaPDFBase64;
                        string extensionArchivo = Path.GetExtension(nombreArchivo);

                        XElement FactPDF = new XElement("factura_pdf_base64".ToUpper(), new XCData(hex));
                        FacturaXML.Add(FactPDF);

                        if (hex != "")
                        {
                            GuardarArchivo(archivoPDF, nombreFactura.ToString(), extensionArchivo);
                        }
                        #endregion Fin de la conversion del archivo PDF

                        XElement FactPosiciones = new XElement("Factura_posiciones".ToUpper());
                        for (int e = 0; e < facturaPosiciones.Count; e++)
                        {
                            string fecha = string.Format("{0:yyyy-MM-dd}", facturaPosiciones[e].deliveryDate);

                            XElement itemsPosiciones = new XElement("item",
                                                                    formateaEtiqueta(facturaPosiciones[e].delivery_note.Trim()) == null ? new XElement("delivery_note".ToUpper()) : new XElement("delivery_note".ToUpper(), formateaEtiqueta(facturaPosiciones[e].delivery_note.Trim())),
                                                                    formateaEtiqueta(fecha) == null ? new XElement("delivery_date".ToUpper()) : new XElement("delivery_date".ToUpper(), formateaEtiqueta(fecha)),
                                                                    formateaEtiqueta(facturaPosiciones[e].item_text.Trim()) == null ? new XElement("item_text".ToUpper()) : new XElement("item_text".ToUpper(), formateaEtiqueta(facturaPosiciones[e].item_text.Trim())),
                                                                    new XElement("item_quantity".ToUpper(), facturaPosiciones[e].item_quantity),
                                                                    new XElement("item_price".ToUpper(), facturaPosiciones[e].item_price),
                                                                    new XElement("item_amount".ToUpper(), facturaPosiciones[e].item_amount),
                                                                    new XElement("item_percentage".ToUpper(), facturaPosiciones[e].item_percentage));
                            FactPosiciones.Add(itemsPosiciones);
                        }
                        FacturaXML.Add(FactPosiciones);

                        XElement land = new XElement("Land1".ToUpper(), Y_ConsoltaFactura[cont].land1.Trim());
                        FacturaXML.Add(land);

                        XElement origen = new XElement("origen".ToUpper(), Y_ConsoltaFactura[cont].origen.Trim());
                        FacturaXML.Add(origen);
                    }
                    string rutaFacturas = System.Configuration.ConfigurationManager.AppSettings["RutaFacturasXML"].ToString();
                    string nomArchivo   = nombreFactura;

                    string archivo = rutaFacturas + "FACT_" + nomArchivo + ".xml";
                    FacturaXML.Save(archivo);

                    //Update el estado de la factura a 1
                    decimal negId = Y_ConsoltaFactura[cont].id_neg_cabecera;
                    ws.updateFacturaEstado(negId);

                    cont++;

                    reemplazarArchivo(archivo);
                    rutaFinalArchivo = archivo;
                }
                return(rutaFinalArchivo);
            }
            catch (Exception ex)
            {
                return("Error al crear el fichero XML: " + ex.Message);
            }
        }
        WebServiceModel IFetchCustomer.GetCustomerDetails(string CUSTOMER_NO)
        {
            var model = new WebServiceModel();

            model.Fields              = new Dictionary <string, object>();
            model.RETCODE             = 998;
            model.RESPONSEDESCRIPTION = "Customer has no critical data issues";

            string connString = ConfigurationManager.ConnectionStrings["AppDbContext"].ToString();
            string schemaname = ConfigurationManager.AppSettings["SchemaName"].ToString();

            string[] critical_fields = { "SURNAME",   "FIRSTNAME",     "DATE_OF_BIRTH", "SEX", "MARITAL_STATUS", "STATE_OF_ORIGIN", "EMPLOYMENT_STATUS",
                                         "MOBILE_NO", "EMAIL_ADDRESS", "MAILING_ADDRESS" };
            string[] date_fields = { "DATE_OF_BIRTH" };

            AppDbContext db = new AppDbContext();

            var customer = db.CDMA_INDIVIDUAL_BIO_DATA.Where(x => x.CUSTOMER_NO == CUSTOMER_NO).FirstOrDefault();

            if (customer == null)
            {
                model = (new WebServiceModel
                {
                    RETCODE = 999,
                    RESPONSEDESCRIPTION = "Customer does not exist"
                });
            }
            else
            {
                var issuefileds = db.MdmDqRunExceptions.Where(a => a.CUST_ID == CUSTOMER_NO).ToList();

                if (issuefileds.Count == 0)
                {
                    model = (new WebServiceModel
                    {
                        RETCODE = 998,
                        RESPONSEDESCRIPTION = "Customer has no data issues"
                    });
                }
                else
                {
                    foreach (var column in issuefileds)
                    {
                        if (critical_fields.Contains(column.CATALOG_TAB_COL))
                        {
                            var query = "SELECT " + column.CATALOG_TAB_COL + " from " + column.CATALOG_TABLE_NAME + " WHERE CUSTOMER_NO = '" + CUSTOMER_NO + "' ";
                            using (SqlConnection connection = new SqlConnection(connString))
                            {
                                connection.Open();
                                SqlCommand    command = new SqlCommand(query, connection);
                                SqlDataReader rdr     = command.ExecuteReader();
                                if (rdr.HasRows)
                                {
                                    while (rdr.Read())
                                    {
                                        if (date_fields.Contains(column.CATALOG_TAB_COL))
                                        {
                                            model.RETCODE             = 0;
                                            model.RESPONSEDESCRIPTION = "Success";
                                            model.Fields.Add(column.CATALOG_TAB_COL, rdr.GetDateTime(rdr.GetOrdinal("" + column.CATALOG_TAB_COL + "")));
                                        }
                                        else
                                        {
                                            model.RETCODE             = 0;
                                            model.RESPONSEDESCRIPTION = "Success";
                                            model.Fields.Add(column.CATALOG_TAB_COL, rdr.GetString(rdr.GetOrdinal("" + column.CATALOG_TAB_COL + "")));
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(model);
        }