<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>http://doc.flexipyme.com.ar/index.php?action=history&amp;feed=atom&amp;title=Formulario_API_2.0.N</id>
	<title>Formulario API 2.0.N - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="http://doc.flexipyme.com.ar/index.php?action=history&amp;feed=atom&amp;title=Formulario_API_2.0.N"/>
	<link rel="alternate" type="text/html" href="http://doc.flexipyme.com.ar/index.php?title=Formulario_API_2.0.N&amp;action=history"/>
	<updated>2026-06-20T05:58:46Z</updated>
	<subtitle>Historial de revisiones de esta página en el wiki</subtitle>
	<generator>MediaWiki 1.33.1</generator>
	<entry>
		<id>http://doc.flexipyme.com.ar/index.php?title=Formulario_API_2.0.N&amp;diff=108&amp;oldid=prev</id>
		<title>Diegogazzolo en 14:20 18 oct 2023</title>
		<link rel="alternate" type="text/html" href="http://doc.flexipyme.com.ar/index.php?title=Formulario_API_2.0.N&amp;diff=108&amp;oldid=prev"/>
		<updated>2023-10-18T14:20:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://doc.flexipyme.com.ar/index.php?title=Formulario_API_2.0.N&amp;amp;diff=108&amp;amp;oldid=96&quot;&gt;Mostrar los cambios&lt;/a&gt;</summary>
		<author><name>Diegogazzolo</name></author>
		
	</entry>
	<entry>
		<id>http://doc.flexipyme.com.ar/index.php?title=Formulario_API_2.0.N&amp;diff=96&amp;oldid=prev</id>
		<title>Diegogazzolo: Página creada con «===Formulario API===  ==== Código de Referencia ====  &lt;syntaxhighlight&gt;   using FlexiPyme.db; using FlexiPyme.entorno; using FlexiPyme.util; using FlexiPyme.ui.extras; usi…»</title>
		<link rel="alternate" type="text/html" href="http://doc.flexipyme.com.ar/index.php?title=Formulario_API_2.0.N&amp;diff=96&amp;oldid=prev"/>
		<updated>2023-04-04T12:05:21Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «===Formulario API===  ==== Código de Referencia ====  &amp;lt;syntaxhighlight&amp;gt;   using FlexiPyme.db; using FlexiPyme.entorno; using FlexiPyme.util; using FlexiPyme.ui.extras; usi…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;===Formulario API===&lt;br /&gt;
&lt;br /&gt;
==== Código de Referencia ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
using FlexiPyme.db;&lt;br /&gt;
using FlexiPyme.entorno;&lt;br /&gt;
using FlexiPyme.util;&lt;br /&gt;
using FlexiPyme.ui.extras;&lt;br /&gt;
using FlexiPyme.ui.formularios.especificos.api;&lt;br /&gt;
using Newtonsoft.Json;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Dynamic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using FlexiPyme.global;&lt;br /&gt;
using FlexiAplicacion.LogicaComun;&lt;br /&gt;
  &lt;br /&gt;
namespace FlexiAplicacion.Extensiones&lt;br /&gt;
{&lt;br /&gt;
    public class frmMicrositioApi : FlexiApi&lt;br /&gt;
    {&lt;br /&gt;
        public override void InicializarFormulario()&lt;br /&gt;
        {&lt;br /&gt;
            this.PermitirAccesoAnonimo = false;&lt;br /&gt;
&lt;br /&gt;
			this.AgregarMetodo(&amp;quot;CargarFormulario&amp;quot;, new List&amp;lt;string&amp;gt;() {});&lt;br /&gt;
            this.AgregarMetodo(&amp;quot;ListarProductos&amp;quot;, new List&amp;lt;string&amp;gt;() {&amp;quot;texto&amp;quot;, &amp;quot;pagina&amp;quot;, &amp;quot;nwflowId&amp;quot;});&lt;br /&gt;
            this.AgregarMetodo(&amp;quot;ObtenerImagen&amp;quot;, new List&amp;lt;string&amp;gt;() {&amp;quot;idMicrositioProducto&amp;quot;});&lt;br /&gt;
            this.AgregarMetodo(&amp;quot;QuitarProducto&amp;quot;, new List&amp;lt;string&amp;gt;() {&amp;quot;idMicrositioProducto&amp;quot;});&lt;br /&gt;
            this.AgregarMetodo(&amp;quot;Publicar&amp;quot;, new List&amp;lt;string&amp;gt;() {});&lt;br /&gt;
            &lt;br /&gt;
            this.AgregarMetodo(&amp;quot;AgregarProducto&amp;quot;, &lt;br /&gt;
                                    new List&amp;lt;FlexiApiParametro&amp;gt;() &lt;br /&gt;
                                    { new FlexiApiParametro(&amp;quot;idProducto&amp;quot;),&lt;br /&gt;
                                        new FlexiApiParametro(&amp;quot;imagenBase64&amp;quot;, FlexiApiParametroTipo.POST_BODY)&lt;br /&gt;
                                    });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public override void EjecutarMetodo(string metodo, Dictionary&amp;lt;string, string&amp;gt; valores, out string json)&lt;br /&gt;
        {&lt;br /&gt;
            json = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            if (metodo == &amp;quot;CargarFormulario&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
				&lt;br /&gt;
                try&lt;br /&gt;
                {&lt;br /&gt;
                	&lt;br /&gt;
                    dynamic lista = new List&amp;lt;dynamic&amp;gt;();&lt;br /&gt;
                    &lt;br /&gt;
                    string sql = @&amp;quot;select id, nombre from Rubros order by nombre&amp;quot;;&lt;br /&gt;
                    &lt;br /&gt;
                    FlexiDbTabla ds = FlexiDb.Listar(sql);&lt;br /&gt;
&lt;br /&gt;
					int cantidadFilas = ds.Filas.Count;&lt;br /&gt;
                    &lt;br /&gt;
&lt;br /&gt;
                    foreach (FlexiDbFila fila in ds.Filas)&lt;br /&gt;
                    {&lt;br /&gt;
                    	int idRubro = fila.ObtenerEntero(&amp;quot;id&amp;quot;);&lt;br /&gt;
                        dynamic obj = new ExpandoObject();&lt;br /&gt;
                        obj.id = idRubro;&lt;br /&gt;
                        obj.nombre = fila.ObtenerComoCadena(&amp;quot;nombre&amp;quot;);&lt;br /&gt;
                        lista.Add(obj);&lt;br /&gt;
                        &lt;br /&gt;
                        obj.productos = new List&amp;lt;dynamic&amp;gt;();&lt;br /&gt;
                        &lt;br /&gt;
                        // Productos de cada rubro&lt;br /&gt;
                        sql = @&amp;quot;select mp.id, p.nombre &lt;br /&gt;
                        		from Productos p&lt;br /&gt;
                                inner join MicroSitioProductos mp on mp.idProducto = p.id&lt;br /&gt;
                                where &lt;br /&gt;
                                p.idRubro = &amp;quot; + idRubro + &amp;quot; order by p.nombre&amp;quot;;&lt;br /&gt;
                        &lt;br /&gt;
                        FlexiDbTabla dsProd = FlexiDb.Listar(sql);&lt;br /&gt;
                        foreach (FlexiDbFila filaProd in dsProd.Filas)&lt;br /&gt;
                        {&lt;br /&gt;
                        	dynamic prod = new ExpandoObject();&lt;br /&gt;
                            prod.id = filaProd.ObtenerEntero(&amp;quot;id&amp;quot;);&lt;br /&gt;
                            prod.nombre = filaProd.ObtenerComoCadena(&amp;quot;nombre&amp;quot;);&lt;br /&gt;
                            &lt;br /&gt;
                            obj.productos.Add(prod);&lt;br /&gt;
                        }&lt;br /&gt;
                        &lt;br /&gt;
                    }&lt;br /&gt;
                    &lt;br /&gt;
                    dynamic resultado = new ExpandoObject();&lt;br /&gt;
                    resultado.lista = lista;&lt;br /&gt;
                    resultado.micrositioUrl = LogicaDeConfiguraciones.ObtenerMicrositioUrl();&lt;br /&gt;
&lt;br /&gt;
                    json = JsonConvert.SerializeObject(resultado, Formatting.Indented);&lt;br /&gt;
&lt;br /&gt;
					//throw new BusinessException(&amp;quot;No se que pasaaaa&amp;quot;);&lt;br /&gt;
                &lt;br /&gt;
                } catch (Exception ex)&lt;br /&gt;
                {&lt;br /&gt;
                	json = &amp;quot;ERROR: &amp;quot; + ex.ToString();&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
            }&lt;br /&gt;
            else if (metodo == &amp;quot;ListarProductos&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
				&lt;br /&gt;
                try&lt;br /&gt;
                {&lt;br /&gt;
                	int itemsPorPagina = 200;&lt;br /&gt;
                &lt;br /&gt;
                    int pagina = int.Parse(valores[&amp;quot;pagina&amp;quot;]);&lt;br /&gt;
                	string texto = valores[&amp;quot;texto&amp;quot;];&lt;br /&gt;
                    string nwflowId = valores[&amp;quot;nwflowId&amp;quot;];&lt;br /&gt;
                &lt;br /&gt;
                    &lt;br /&gt;
                    dynamic lista = new List&amp;lt;dynamic&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
					string sql = @&amp;quot;select p.*, pr.codigo as proveedorCodigo, r.codigo as rubroCodigo,&lt;br /&gt;
                    				cast(round((select sum(ingreso-egreso) from MovimientosStockVW where idProducto = p.id),0) as int) as stock&lt;br /&gt;
                    				from Productos p&lt;br /&gt;
                                    left join Proveedores pr on p.idProveedor = pr.id&lt;br /&gt;
                                    left join Rubros r on p.idRubro = r.id &amp;quot;;&lt;br /&gt;
                    &lt;br /&gt;
                    string sqlWhere = &amp;quot; where p.id &amp;gt; 0 &amp;quot;;&lt;br /&gt;
                    &lt;br /&gt;
                    if ( texto != &amp;quot;&amp;quot;)&lt;br /&gt;
                    	sqlWhere += &amp;quot; and (p.nombre like @texto + &amp;#039;%&amp;#039; or p.codigoBarras = @texto or cast(p.codigo as varchar(20)) = @texto) &amp;quot;;&lt;br /&gt;
                    &lt;br /&gt;
                    string sqlOrder = &amp;quot; order by p.nombre&amp;quot;;&lt;br /&gt;
                    &lt;br /&gt;
                    Dictionary&amp;lt;string, object&amp;gt; pars = new Dictionary&amp;lt;string, object&amp;gt;();&lt;br /&gt;
                    pars.Add(&amp;quot;@texto&amp;quot;, texto);&lt;br /&gt;
                    &lt;br /&gt;
                    FlexiDbTabla ds = FlexiDb.Listar(sql + sqlWhere + sqlOrder, pars);&lt;br /&gt;
&lt;br /&gt;
					int cantidadFilas = ds.Filas.Count;&lt;br /&gt;
                    &lt;br /&gt;
                    // Paginar&lt;br /&gt;
                    ds.Paginar(pagina, itemsPorPagina);&lt;br /&gt;
&lt;br /&gt;
                    foreach (FlexiDbFila fila in ds.Filas)&lt;br /&gt;
                    {&lt;br /&gt;
                        dynamic obj = new ExpandoObject();&lt;br /&gt;
                        obj.id = fila.ObtenerEntero(&amp;quot;id&amp;quot;);&lt;br /&gt;
                        obj.codigo = fila.ObtenerEntero(&amp;quot;codigo&amp;quot;);&lt;br /&gt;
                        obj.nombre = fila.ObtenerComoCadena(&amp;quot;nombre&amp;quot;);&lt;br /&gt;
                        obj.unidadCompra = fila.ObtenerComoCadena(&amp;quot;unidadCompra&amp;quot;);&lt;br /&gt;
                        obj.codigoBarras = fila.ObtenerComoCadena(&amp;quot;codigoBarras&amp;quot;);&lt;br /&gt;
                        obj.costo = fila.ObtenerMoneda(&amp;quot;costo&amp;quot;);&lt;br /&gt;
                        obj.precioProveedor = fila.ObtenerComoCadena(&amp;quot;precioProveedor&amp;quot;);&lt;br /&gt;
                        obj.precio1 = fila.ObtenerMoneda(&amp;quot;precio1&amp;quot;);&lt;br /&gt;
                        obj.precio2 = fila.ObtenerMoneda(&amp;quot;precio2&amp;quot;);&lt;br /&gt;
                        obj.proveedorCodigo = fila.ObtenerEntero(&amp;quot;proveedorCodigo&amp;quot;);&lt;br /&gt;
                        obj.rubroCodigo = fila.ObtenerComoCadena(&amp;quot;rubroCodigo&amp;quot;);&lt;br /&gt;
                        obj.discontinuado = fila.ObtenerBooleano(&amp;quot;discontinuado&amp;quot;);&lt;br /&gt;
                        obj.fechaModificacion = fila.ObtenerComoCadena(&amp;quot;fechaModificacion&amp;quot;);&lt;br /&gt;
                        obj.stock = fila.ObtenerEntero(&amp;quot;stock&amp;quot;);&lt;br /&gt;
                        lista.Add(obj);&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
					int paginas = 0;&lt;br /&gt;
                    &lt;br /&gt;
                    if ( cantidadFilas % itemsPorPagina != 0)&lt;br /&gt;
                    	paginas = 1 + (cantidadFilas / itemsPorPagina);&lt;br /&gt;
                    else&lt;br /&gt;
                    	paginas = (cantidadFilas / itemsPorPagina);&lt;br /&gt;
					&lt;br /&gt;
					dynamic resultado = new ExpandoObject();&lt;br /&gt;
                    resultado.lista = lista;&lt;br /&gt;
                    resultado.cantidadFilas = cantidadFilas;&lt;br /&gt;
                    resultado.cantidadPaginas = paginas;&lt;br /&gt;
                    &lt;br /&gt;
&lt;br /&gt;
                    json = JsonConvert.SerializeObject(resultado, Formatting.Indented);&lt;br /&gt;
                &lt;br /&gt;
                //throw new BusinessException(&amp;quot;No se que pasaaaa&amp;quot;);&lt;br /&gt;
                &lt;br /&gt;
                } catch (Exception ex)&lt;br /&gt;
                {&lt;br /&gt;
                	json = &amp;quot;ERROR: &amp;quot; + ex.ToString();&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
            }&lt;br /&gt;
            else if (metodo == &amp;quot;AgregarProducto&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
            	dynamic msg = new ExpandoObject();&lt;br /&gt;
                &lt;br /&gt;
            	try&lt;br /&gt;
                {&lt;br /&gt;
                    string idProducto = valores[&amp;quot;idProducto&amp;quot;];&lt;br /&gt;
                    string imagenBase64 = valores[&amp;quot;imagenBase64&amp;quot;];&lt;br /&gt;
                    &lt;br /&gt;
                    string base64 = imagenBase64.Substring(imagenBase64.IndexOf(&amp;#039;,&amp;#039;) + 1);&lt;br /&gt;
&lt;br /&gt;
    				base64 = base64.Trim(&amp;#039;\0&amp;#039;);&lt;br /&gt;
    				byte[] img = Convert.FromBase64String(base64);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                    string sql = &amp;quot;insert into MicroSitioProductos (idProducto, imagen) values (@idProducto, @imagen)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
                    Dictionary&amp;lt;string, object&amp;gt; pars = new Dictionary&amp;lt;string, object&amp;gt;();&lt;br /&gt;
                    pars.Add(&amp;quot;@idProducto&amp;quot;, idProducto);&lt;br /&gt;
                    pars.Add(&amp;quot;@imagen&amp;quot;, img);&lt;br /&gt;
&lt;br /&gt;
                    int idMicrositioProducto = FlexiDb.EjecutarInsert(sql, pars);&lt;br /&gt;
                    &lt;br /&gt;
                    // Subir imagen al sitio&lt;br /&gt;
                    LogicaDeMicrositios.SubirImagen(idMicrositioProducto, img);&lt;br /&gt;
&lt;br /&gt;
                    msg.estado = &amp;quot;OK&amp;quot;;&lt;br /&gt;
                    msg.idMicrositioProducto = idMicrositioProducto;&lt;br /&gt;
                &lt;br /&gt;
                }&lt;br /&gt;
                catch( Exception ex)&lt;br /&gt;
                {&lt;br /&gt;
                	msg.estado = &amp;quot;ERROR&amp;quot;;&lt;br /&gt;
                    msg.mensaje = ex.ToString();&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                json = JsonConvert.SerializeObject(msg, Formatting.Indented);&lt;br /&gt;
                &lt;br /&gt;
            }&lt;br /&gt;
            else if (metodo == &amp;quot;ObtenerImagen&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
				&lt;br /&gt;
                try&lt;br /&gt;
                {&lt;br /&gt;
                	int idMicrositioProducto = Convert.ToInt32(valores[&amp;quot;idMicrositioProducto&amp;quot;]);&lt;br /&gt;
                    &lt;br /&gt;
                    FlexiDbFila filaDB = FlexiDb.CargarEntidad(idMicrositioProducto, &amp;quot;MicroSitioProductos&amp;quot;);&lt;br /&gt;
                    byte[] datos = filaDB.ObtenerBinario(&amp;quot;imagen&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
					string archivoNombre = &amp;quot;imagen&amp;quot; + idMicrositioProducto + &amp;quot;.jpg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
					System.Web.HttpContext.Current.Response.Clear();&lt;br /&gt;
                    System.Web.HttpContext.Current.Response.AddHeader(&amp;quot;Content-Disposition&amp;quot;, &amp;quot;attachment; filename=&amp;quot; + archivoNombre);&lt;br /&gt;
                    System.Web.HttpContext.Current.Response.AddHeader(&amp;quot;Content-Length&amp;quot;, datos.Length.ToString());&lt;br /&gt;
                    System.Web.HttpContext.Current.Response.ContentType = &amp;quot;image/jpeg&amp;quot;;&lt;br /&gt;
                    System.Web.HttpContext.Current.Response.BinaryWrite(datos);&lt;br /&gt;
                    System.Web.HttpContext.Current.Response.End();&lt;br /&gt;
                &lt;br /&gt;
                } catch (Exception ex)&lt;br /&gt;
                {&lt;br /&gt;
                	json = &amp;quot;ERROR: &amp;quot; + ex.ToString();&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
            }&lt;br /&gt;
            else if (metodo == &amp;quot;QuitarProducto&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
				&lt;br /&gt;
                dynamic msg = new ExpandoObject();&lt;br /&gt;
                &lt;br /&gt;
            	try&lt;br /&gt;
                {&lt;br /&gt;
                    int idMicrositioProducto = Convert.ToInt32(valores[&amp;quot;idMicrositioProducto&amp;quot;]);&lt;br /&gt;
                    string sql = &amp;quot;delete from  MicroSitioProductos where id = &amp;quot; + idMicrositioProducto;&lt;br /&gt;
&lt;br /&gt;
                    Dictionary&amp;lt;string, object&amp;gt; pars = new Dictionary&amp;lt;string, object&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
                    FlexiDb.EjecutarUpdate(sql, pars);&lt;br /&gt;
                    &lt;br /&gt;
                    // Quitar imagen del sitio&lt;br /&gt;
                    //LogicaDeMicrositios.QuitarImagen(idMicrositioProducto);&lt;br /&gt;
&lt;br /&gt;
                    msg.estado = &amp;quot;OK&amp;quot;;&lt;br /&gt;
                &lt;br /&gt;
                }&lt;br /&gt;
                catch( Exception ex)&lt;br /&gt;
                {&lt;br /&gt;
                	msg.estado = &amp;quot;ERROR&amp;quot;;&lt;br /&gt;
                    msg.mensaje = ex.ToString();&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                json = JsonConvert.SerializeObject(msg, Formatting.Indented);&lt;br /&gt;
                &lt;br /&gt;
            }&lt;br /&gt;
            else if (metodo == &amp;quot;Publicar&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
				&lt;br /&gt;
                dynamic msg = new ExpandoObject();&lt;br /&gt;
                &lt;br /&gt;
            	try&lt;br /&gt;
                {&lt;br /&gt;
                    LogicaDeMicrositios.Publicar();&lt;br /&gt;
&lt;br /&gt;
                    msg.estado = &amp;quot;OK&amp;quot;;&lt;br /&gt;
                &lt;br /&gt;
                }&lt;br /&gt;
                catch( Exception ex)&lt;br /&gt;
                {&lt;br /&gt;
                	msg.estado = &amp;quot;ERROR&amp;quot;;&lt;br /&gt;
                    msg.mensaje = ex.ToString();&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                json = JsonConvert.SerializeObject(msg, Formatting.Indented);&lt;br /&gt;
                &lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Diegogazzolo</name></author>
		
	</entry>
</feed>