Lista de Verificación de Estado de Mercancía

ANTECEDENTES

Uno de los procesos comunes en almacén es la recepción de mercancía y complementario a ello es validar las cantidades recibidas así como la calidad en la que llega el embalaje o estado de las cajas o bultos, para asegurar que no haya llegado en mal estado. Por lo que una buena practica es poder proporcionar esta información en el registro de recepción de orden de compra, y poder notificar al responsable de Almacén o algún recurso que se desee para poder tomar decisiones de una devolución o transferir a algún almacén de No Conformidad.

¿ COMO REALIZAR LA LISTA DE VERIFICACIÓN?

Es bien conocido que podemos personalizar los formularios de las transacciones y para ello, vamos a la transacción Recibo de artículo y en la opción Personalizar (ubicada en la parte superior derecha de la pantalla) seleccionamos Nuevo campo de contenido, para agregar cada uno de los campos que deseemos de nuestra lista de verificación. Finalmente podemos crear un flujo de trabajo que nos permite mandar una notificación via correo electrónico cuando alguno de los campos anteriormente mencionados contenga alguna casilla de verificación que sea marcada o que una opción de una lista/registro sea seleccionada.

recibo_compras

¿COMO PODEMOS AYUDAR?

NetSuite es una gran plataforma que configurada adecuadamente puede dar resultados extraordinarios en su negocio. En IMR contamos con la experiencia y conocimientos para apoyar el logro de sus objetivos.  Si necesita ayuda, por favor contactanos.

Borrar transacciones intercompañia

Antecedentes

Una actividad frecuente (mas diaria) es borrar transacciones, usualmente dicha actividad no representa problema alguno, salvo borrar primero las transacciones dependientes, sin embargo, la pregunta es, ¿cómo borrar transacciones intercompañia si una es dependiente de la otra y viceversa?, por ejemplo, una orden de venta esta enlazada con una orden de compra, lo normal sería primero borrar la orden de compra, luego la orden de venta, esto por incorrecto que parezca es rechazado por NetSuite a fin de mantener su propia congruencia y consistencia.

¿Cómo borrar transacciones intercompañia?

Solo debemos ejecutar los siguientes pasos:

  • Si tiene artículos de inventario:
    1. Editar la orden de venta
    2. Eliminar TODOS los artículos
    3. Agregar un artículo de tipo Fuera de inventario
    4. Guardar
    5. Editar la orden de compra
    6. Eliminar TODOS los artículos
    7. Agregar un artículo de tipo Fuera de inventario
    8. Guardar
    9. Editar nuevamente la orden de venta.
    10. Navegar al menú Más acciones > Eliminar
    11. Editar nuevamente la orden de compra.
    12. Navegar al menú Más acciones > Eliminar

  • Si NO tiene artículos de inventario:
    1. Editar la orden de venta
    2. Dejar en blanco el campo TRANSACCIÓN ENTRE EMPRESA ASOCIADAS
    3. Guardar
    4. Editar nuevamente la orden de venta.
    5. Navegar al menú Más acciones > Eliminar
    6. Editar la orden de compra
    7. Navegar al menú Más acciones > Eliminar

Recuerda que todos los pasos mencionados arriba son resultado directo de las validaciones y reglas que NetSuite tiene en sus transacciones a fin de evitar incongruencia o inconsistencia en la información.

Tip: puedes generar un Script para automatizar este proceso.

¿Cómo podemos ayudar?

NetSuite es una gran plataforma que configurada adecuadamente puede dar resultados extraordinarios en su negocio. En IMR contamos con la experiencia y conocimientos para apoyar el logro de sus objetivos. Si necesita ayuda, por favor contactanos.

CONSIGNACIÓN DE MATERIAL DE CLIENTE

Antecedentes

Es frecuente tener el escenario donde el cliente nos solicita mensualmente o periódicamente mercancía sobre demanda por lo que se debe contemplar siempre tener una existencia (stock) en las instalaciones del cliente. Conforme se va consumiendo el material y se va resurtiendo pues se va facturando el mismo.

¿Como crear una consignación de material?

En este caso existen varias posibilidades para poder realizar este procedimiento pero en este caso mencionaremos una basada en las mejores practicas, de acuerdo a la funcionalidad que nos permite el sistema:

1-. Primeramente se tiene que crear una cotización/estimación, es importante que el material que se va mandar a consignación debe haber existencia (en caso contrario primeramente manualmente se transfiere inventario a la ubicación de la cual se generar la cotización).

IMPORTANTE: Dentro de la cotización se crea un campo llamado “Ubicación de Consignación” donde se tiene que indicar la ubicación de Consignación y/o si se requiere la sub-ubicación del cliente dependiendo que detalle se desea controlar. Previamente esta ubicación/sub-ubicación o deposito debe estar creado y que sea “No disponible para venta”

2.- Una vez creada la cotización mediante un botón de Transferencia. Permite crear la transferencia de manera automática de la mercancía existente y transferirla a la ubicación de consignación indicada. Este proceso es mediante la generación de un script. 

3.- Una vez guardada la Transferencia aparece el botón Imprimir Remisión. Que nos permite crear un formato PDF de “salida” de mercancía.

4.- Una vez que se requiera facturar, se tiene que realizar una Transferencia de Inventario para regresar la mercancía. Este proceso se puede realizar manualmente o puede semi-automatizarse para que mediante un script se cree la transacción transferencia de inventario pero sin guardar, para que el usuario ajuste la cantidad o lineas que realmente se transferirán para facturar.

5.- Desde la estimación esta el botón de Factura de Cliente donde se puede facturar directamente y con ello también descuenta de inventario (esto tiene que ser lo mas pronto posible a la transferencia para garantizar la existencia. 

NOTA: El proceso de facturación se tiene que realizar lo antes posible a realizar la transferencia de inventario para regresar la mercancía a la ubicación disponible.

¿COMO PODEMOS AYUDAR?

NetSuite es una gran plataforma que configurada adecuadamente puede dar resultados extraordinarios en su negocio. En IMR contamos con la experiencia y conocimientos para apoyar el logro de sus objetivos.  Si necesita ayuda, por favor contactanos.

Consumir WebServices de NetSuite desde el navegador

Antecedentes

La integración entre uno o más sistemas siempre ha sido todo un tema, es común que al pensar en “Integracíon de sistemas” pensemos en archivos CSV o TXT, consultas SQL o directamente modificar la base de datos, otra opción es WebServices, cada día más presentes y mas potentes.

En estos tiempos donde la tecnología CloudComputing gana más terreno podemos probar un WebService sin tener que pasar por el dolor que impone la instalación de un lenguaje de programación, su IDE, sus librerias, etc, podemos probar directamente en WebService desde el navegador utilizando la pagina WSDL Browser

¿Que probar utilizar WSDL Browser?

Solo debemos ejecutar los siguientes pasos:

  1. Ir a la página web http://wsdlbrowser.com/
  2. Proporcionar la liga del WSDL a probar
  3. Presionar el botón Browse
  4. Elegir un método del panel izquierdo.
  5. Completar el request
  6. Presionar el botón Call function
  7. Esperar resultados.

Ejemplo en NetSuite: Consultar la existencia de artículos

  • WSDL:
  • https://webservices.netsuite.com/wsdl/v2015_1_0/netsuite.wsdl
  • Request
    <?xml version="1.0" encoding="UTF-8"?>
        <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:core_2015_1.platform.webservices.netsuite.com" xmlns:ns2="urn:messages_2015_1.platform.webservices.netsuite.com">
            <SOAP-ENV:Header>
                <ns2:login>
                    <ns2:passport>
                        <ns1:email>MI_USUARIO</ns1:email>
                        <ns1:password>MI_CONTRASEÑA</ns1:password>
                        <ns1:account>MI_CUENTA_DE_NETSUITE</ns1:account>
                        <ns1:role internalId="MI_ID_DE_ROL"/>
                    </ns2:passport>
                </ns2:login>
            </SOAP-ENV:Header>
            <SOAP-ENV:Body>
                <ns2:getItemAvailability>
                    <ns2:itemAvailabilityFilter>
                        <ns1:item>
                            <ns1:recordRef internalId="38"/>
                            <ns1:recordRef internalId="17"/>
                        </ns1:item>
                    </ns2:itemAvailabilityFilter>
                </ns2:getItemAvailability>
            </SOAP-ENV:Body>
        </SOAP-ENV:Envelope>
    
  • Response
    <?xml version="1.0" encoding="utf-8"?>
        <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <soapenv:Header>
                <platformMsgs:documentInfo xmlns:platformMsgs="urn:messages_2015_1.platform.webservices.netsuite.com">
                    <platformMsgs:nsId>WEBSERVICES_TSTDRV904452_06262015836892025729143836_4fe490de</platformMsgs:nsId>
                </platformMsgs:documentInfo>
            </soapenv:Header>
            <soapenv:Body>
                <getItemAvailabilityResponse xmlns="urn:messages_2015_1.platform.webservices.netsuite.com">
                    <platformCore:getItemAvailabilityResult xmlns:platformCore="urn:core_2015_1.platform.webservices.netsuite.com">
                        <platformCore:status isSuccess="true"/>
                        <platformCore:itemAvailabilityList>
                            <platformCore:itemAvailability>
                                <platformCore:item internalId="17" type="lotNumberedInventoryItem">
                                    <platformCore:name>CRMTMUSB</platformCore:name>
                                </platformCore:item>
                                <platformCore:lastQtyAvailableChange>2015-05-11T09:40:23.000-07:00</platformCore:lastQtyAvailableChange>
                                <platformCore:locationId internalId="2" type="location">
                                    <platformCore:name>DF</platformCore:name>
                                </platformCore:locationId>
                                <platformCore:quantityOnHand>1501.0</platformCore:quantityOnHand>
                                <platformCore:onHandValueMli>75050.0</platformCore:onHandValueMli>
                                <platformCore:quantityCommitted>0.0</platformCore:quantityCommitted>
                                <platformCore:quantityAvailable>1501.0</platformCore:quantityAvailable>
                            </platformCore:itemAvailability>
                            <platformCore:itemAvailability>
                                <platformCore:item internalId="17" type="lotNumberedInventoryItem">
                                    <platformCore:name>CRMTMUSB</platformCore:name>
                                </platformCore:item>
                                <platformCore:lastQtyAvailableChange>2015-05-11T09:34:19.000-07:00</platformCore:lastQtyAvailableChange>
                                <platformCore:locationId internalId="1" type="location">
                                    <platformCore:name>GDL</platformCore:name>
                                </platformCore:locationId>
                                <platformCore:quantityOnHand>82.0</platformCore:quantityOnHand>
                                <platformCore:onHandValueMli>10660.0</platformCore:onHandValueMli>
                                <platformCore:quantityOnOrder>0.0</platformCore:quantityOnOrder>
                                <platformCore:quantityCommitted>0.0</platformCore:quantityCommitted>
                                <platformCore:quantityAvailable>82.0</platformCore:quantityAvailable>
                            </platformCore:itemAvailability>
                            <platformCore:itemAvailability>
                                <platformCore:item internalId="38" type="lotNumberedInventoryItem">
                                    <platformCore:name>C-3102</platformCore:name>
                                </platformCore:item>
                                <platformCore:lastQtyAvailableChange>2015-04-14T14:14:39.000-07:00</platformCore:lastQtyAvailableChange>
                                <platformCore:locationId internalId="2" type="location">
                                    <platformCore:name>DF</platformCore:name>
                                </platformCore:locationId>
                                <platformCore:quantityOnHand>360.0</platformCore:quantityOnHand>
                                <platformCore:onHandValueMli>1440.0</platformCore:onHandValueMli>
                                <platformCore:quantityCommitted>0.0</platformCore:quantityCommitted>
                                <platformCore:quantityAvailable>360.0</platformCore:quantityAvailable>
                            </platformCore:itemAvailability>
                            <platformCore:itemAvailability>
                                <platformCore:item internalId="38" type="lotNumberedInventoryItem">
                                    <platformCore:name>C-3102</platformCore:name>
                                </platformCore:item>
                                <platformCore:locationId internalId="1" type="location">
                                    <platformCore:name>GDL</platformCore:name>
                                </platformCore:locationId>
                            </platformCore:itemAvailability>
                        </platformCore:itemAvailabilityList>
                    </platformCore:getItemAvailabilityResult>
                </getItemAvailabilityResponse>
            </soapenv:Body>
        </soapenv:Envelope>
    

Este es solo un ejemplo rápido, según los requerimientos de cada quien sería el request y el response, recuerda que cada empresa tiene sus propios necesarios, aún así con SuiteTalk, puedes resolver todos y cada uno.

¿Cómo podemos ayudar?

NetSuite es una gran plataforma que configurada adecuadamente puede dar resultados extraordinarios en su negocio. En IMR contamos con la experiencia y conocimientos para apoyar el logro de sus objetivos. Si necesita ayuda, por favor contactanos.

Formularios en Línea y su color

Antecedentes

En la implementación de uno de nuestros clientes tuvimos la necesidad de colocar un formulario en linea (Suitlet sin inicio de sesión), algo que sin duda no representa un reto, sin embargo, el cliente nos solicito cambiar los colores del formulario, es sabido por todos que los Scripts no manipulan el Look & Feel de NetSuite, mucho menos manipulan el DOM de la página web.

¿Que hacer para cambiar los colores delos formularios en línea?

Solo debemos ejecutar los siguientes pasos:

  1. Ir a Configuración > Estructura del sitio > Configurar sitio web
  2. Clic en la pestaña Aspecto
  3. Seleccionar el tema que mas nos guste en Tema de Color del Sitio Web

Tema: Básico : Azul y gris

Captura de pantalla de 2015-06-26 16:15:47

Tema: Básico : Piedra natural

Captura de pantalla de 2015-06-26 16:12:54

Podemos seleccionar entre una basta cantidad de temas pre-configurados o crear nuestro propio tema en Configuración> Estructura del sitio > Temas de color.

¿Cómo podemos ayudar?

NetSuite es una gran plataforma que configurada adecuadamente puede dar resultados extraordinarios en su negocio. En IMR contamos con la experiencia y conocimientos para apoyar el logro de sus objetivos. Si necesita ayuda, por favor contactanos.

Ordenes de compra abiertas con Netsuite.

Antecedentes

En algunos escenarios de clientes, es común que tengan requerimientos de colocar ordenes de compra abiertas. Esta funcionalidad no estaba disponible en Netsuite y fue liberada recientemente.

La orden de compra abierta es una buena idea cuando se tienen acuerdo con los proveedores para realizar suministros durante un periodo de tiempo. El tener una orden de compra abierta puede ayudar a tener mejores condiciones de compra con el proveedor. Por ejemplo, si sabemos que en el año vamos a comprar 300 toneladas de un artículo en diferentes momentos, es mejor hacer una sola orden de compra por el total y obtener mejores condiciones, a ir creando ordenes de compra parciales con precios probablemente más altos.

Ordenes de compra abiertas con Netsuite.

La funcionalidad disponible ahora en Netsuite, permite crear las ordenes de compra abiertas, como un registro adicional. Posteriormente se pueden establecer las reglas para liberar ordenes de compra sobre la orden de compra abierta.

Orden de compra abierta con Netsuite
Orden de compra abierta

Lo interesante en la orden de compra abierta es el cómo es que se va a liberar la solicitud a proveedor. Aqui podemos elegir un calendario manual, o bien adaptarnos al proceso de planeación de la demanda para que se libere en automático. O bien liberar manualmente si es requerido.

Calendario Orden de compra abierta

Con la orden liberada, se genera una nueva orden de compra asociada a la orden de compra abierta. Como registro individual, o en conjunto con la orden abierta, se pueden asociar flujos de aprobación y de trabajo lo que resulta en una solución muy funcional para el manejo completo de ordenes de compra abierta.

¿Cómo podemos ayudar?

NetSuite es una gran plataforma que configurada adecuadamente puede dar resultados extraordinarios en su negocio. En IMR contamos con la experiencia y conocimientos para apoyar el logro de sus objetivos. Si necesita ayuda, por favor contactanos.

Cuando los scripts de Netsuite interfieren con la velocidad y el performance.

Antecedentes

En el desarrollo de la configuración de Netsuite, principalmente en el diseño y configuración de la solución, es común encontrar escenarios en dónde es requerido realizar scripts o desarrollos para personalización, que van más allá de la configuración nativa de la herramienta.

Normalmente son adecuaciones y automatizaciones requeridas por los procesos de negocio. Estas adecuaciones, pueden tener un impacto en la velocidad de las transacciones y en ocasiones es interesante conocer como ajustar y nivelar los requerimientos de negocio vs el desempeño.

El monitor de desempeño de scripts.

En general creo que los mejores scripts son los que no se requieren. Pero si el escenario demanda la creación de un script, el primer paso es elegir bien el tipo de script requerido. En Netsuite, es posible crear varios tipos de scripts, y estos pueden tener un comportamiento distinto. Los más comunes son client, user event, scheduled y RESTlets.

Si partimos de una buena definición, el performance será mejor.

Ahora bien, aun con una buena definición, es muy común que se requiera conocer que scripts están afectando una transacción y como. Para de esta forma poder tomar decisiones informadas respecto a que y como ajustar.

Ahí es dónde el Script Performance Monitor de Netsuite, puede resultar de gran ayuda, por que nos proporciona información valiosa respecto a que está afectando a nuestra transacción.

Permite ver una lista de las transacciones en un periodo y conocer como ha sido su desempeño.
Permite ver una lista de las transacciones en un periodo y conocer como ha sido su desempeño.

Así mismo nos presenta de manera gráfica que es lo que está tomando mayor tiempo. Luego de ver los impactos, normalmente podemos encontrar formas de automatizar aún más o bien eliminar algunos scripts que no agregan valor y que pueden ser realizados de manera diferente o bien mediante ajustes al proceso de negocio.

Script Performance Monitor
Gráfico de impacto de Sripts en una transacción.

En la pasada reunión de usuarios, SuiteWorld 2015, se presentó lo que creo será la versión dos del monitor. Mucho más detalle de cada transacción, sus impactos, etc. etc. Algo que sin duda será de mucha utilidad, sobre todo cuando los requerimientos son complejos.

¿Cómo podemos ayudar?

NetSuite es una gran plataforma que configurada adecuadamente puede dar resultados extraordinarios en su negocio. En IMR contamos con la experiencia y conocimientos para apoyar el logro de sus objetivos. Si necesita ayuda, por favor contactanos.