Git Product home page Git Product logo

openboxes / openboxes Goto Github PK

View Code? Open in Web Editor NEW
594.0 34.0 389.0 87.57 MB

OpenBoxes is a supply chain management system designed to manage inventory and track stock movements for healthcare facilities.

Home Page: https://openboxes.com

License: Eclipse Public License 1.0

Shell 0.01% HTML 0.34% Groovy 72.08% JavaScript 24.19% CSS 2.34% CoffeeScript 0.01% Batchfile 0.05% Java 0.01% SCSS 0.94% Less 0.02%
inventory-management warehouse-management shipment-tracking healthcare disaster-response hacktoberfest grails

openboxes's Introduction

unit tests integration tests Documentation Status dbdocs docker image Financial Contributors on Open Collective PRs Welcome Join the chat at https://gitter.im/openboxes/openboxes

OpenBoxes

About

OpenBoxes is an Open Source Inventory and Supply Chain Management System. The initial implementation of OpenBoxes will occur at Partners In Health-supported facilities in Haiti.

Contributors

Code Contributors

This project exists thanks to all the people who contribute. [Contribute].

Financial Contributors

Become a financial contributor and help us sustain our community. [Contribute]

Individuals

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]

License

Copyright (c) 2012 Partners In Health. All rights reserved. The use and distribution terms for this software are covered by the Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can be found in the file epl-v10.html at the root of this distribution. By using this software in any fashion, you are agreeing to be bound by the terms of this license. You must not remove this notice, or any other, from this software.

Deployment Options

We currently support deploying the OpenBoxes application to DigitalOcean and Azure. We would like to support other deployment options like Amazon Web Services, Vultr, Linode, and others but don't have the resources to build and maintain these deployment options at the moment. If interested in other deployment options, please participate in the discussion here to help us better understand your requirements and expectations regarding deployment. For instance, it would be helpful to hear from service providers who would like to manage multiple customers or users who aren't tech savvy but prefer a certain deployment platform because of its ease of use.

Deploy to DigitalOcean

The Deploy to DigitalOcean button will redirect you to DigitalOcean, where you will be able to choose

For more information and step-by-step instructions go to: https://community.openboxes.com/t/install-openboxes-via-digitalocean-marketplace/311

For our DigitalOcean marketplace app go to: https://marketplace.digitalocean.com/apps/openboxes-server?refcode=da4712a483b4

Deploy to DigitalOcean

Deploy to Azure

Deploy to Azure button will bring you to Azure portal, where after filling a few of the properties you can get your OpenBoxes environment in a matter of minutes. In the Azure setup screen, look at each property's tooltip description to understand its purpose.

For more information and step-by-step instructions go to: https://openboxes.atlassian.net/wiki/spaces/OBW/pages/1719435265/Push-button+deployment

Deploy to Azure uses the ARM template defined in openboxes-devops repository.

Deploy to Azure

Visualize will open armviz.io to display graph of all of the Azure resources, which the deployment will provision.

Visualize

Setup development environment

Install Dependencies

Required

Optional

Basic setup instructions for developers

These instructions are for developers only. If you are a user/implementer, please check out our Installation documentation.

1. Install Dependencies

Install required dependencies above

2. Install Grails

Check that you have SDK Man installed properly (otherwise follow instructions on the skdman install page).

$ sdk version
SDKMAN 5.13.2

Install Grails 1.3.9

$ sdk install grails 1.3.9

3. Clone repository

If you are a core contributor:

git clone [email protected]:openboxes/openboxes.git      

If you are a not core contributor, fork openboxes git repository and replace git url with the one of your forked repository

git clone [email protected]:<gitusername>/openboxes.git      

4. Create database

Create openboxes database

mysql -u root -p -e 'create database openboxes default charset utf8;'

Create openboxes user

mysql -u root -p -e 'grant all on openboxes.* to "openboxes"@"localhost" identified by "openboxes";'

5. Create Openboxes configuration file

Edit $HOME/.grails/openboxes-config.properties

# Database connection settings
# You can use dataSource.url when you are using a non-dev/non-test database (test-app may not run properly).
# If you want to run $ grails test-app you should comment out the dataSource.url below and create a new 
# openboxes_test database.  Eventually, we will move to an in-memory H2 database for testing, but we're 
# currently stuck with MySQL because I'm using some MySQL-specific stuff in the Liquibase changesets.  My bad.

dataSource.url=jdbc:mysql://localhost:3306/openboxes
dataSource.username=openboxes
dataSource.password=openboxes

# OpenBoxes mail settings (disabled by default)
grails.mail.enabled=false

NOTE: If you are running in development mode with a copy of an existing production database, you will need to instruct the application to not setup test fixtures automatically by uncommenting the above property:

openboxes.fixtures.enabled=false

6. Install NPM dependencies

npm config set engine-strict true
npm install

7. Build React frontend

You can build React frontend with this command, but it will be automatically build when starting the application.

npm run bundle

8. React frontend Hot-Reload

When using this command React fronted will be rebuild automatically after any change, you just need to refresh the browser to see the effect.

npm run watch

9. Upgrade the project to the currently installed grails version

Either of the following actions (upgrade, compile, run-app) should generate the all important Spring configuration (/WEB-INF/applicationContext.xml) and start the dependency resolution process.

grails upgrade

OR

grails compile

The grails compile step is not necessary since grails run-app will invoke the compilation step, but it doesn't hurt anything.

If you see any errors, run the command again.

IMPORTANT That last line is important. Because of some quirkiness with the way older versions of Grails resolve dependencies and generates config files, you may need to run either of these commands multiple times in order to resolve all dependencies and generate the config files.

Once the dependency resolution phase has completed, all dependencies will be stored in a local ivy cache (usually under $USER_HOME/.grails/ivy-cache). You do not have to worry about this, just know that the dependencies are now on your machine and Grails will attempt to find them there before it tries to resolve them in a remote repository.

10. Start application in development mode

The application can be run in development mode. This starts the application running in an instance of Tomcat within the Grails console. You may need to run 'grails run-app' several times in order to download all dependencies.

grails run-app

11. Open application in Google Chrome

http://localhost:8080/openboxes

12. Log into OpenBoxes

You can use the default accounts (manager:password OR admin:password). Once you are logged in as an admin, you can create own account. Or you can use the signup form to create a new account.

13. React tests

To run new frontend (React) tests type:

npm test

14. Grails tests

To run Grails tests type:

grails test-app

15. React documentation

Start a style guide dev server:

npm run styleguide

View your style guide in the browser:

http://localhost:6060

Troubleshooting

How to Debug

  • Run Grails in debug mode
    grails-debug run-app
    
  • In Intellij navigate to Run > Edit Configurations
  • Create a new Remote Debug Configuration
    • Name: openboxes-debug
    • Transport: Socket
    • Debugger mode: Attach
    • Host: localhost
    • Port: 5005
  • Command line arguments should look something like this:
    -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
    

Problem

Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/applicationContext.xml]

Solution

Execute the grails upgrade command in order to generate the files nece

$ grails upgrade

See the following stackoverflow article: http://stackoverflow.com/questions/24243027/grails-spring-security-sample-application-not-working

openboxes's People

Contributors

alannadolny avatar antonio-guillen avatar augusto-moraes avatar awalkowiak avatar bamoure avatar bmwasaru avatar dbienkowska avatar dependabot[bot] avatar drodzewicz avatar gitter-badger avatar icaria avatar jakkarth avatar jannikbecher avatar jmiranda avatar julienfoschia avatar kchelstowski avatar magdatoczek avatar mdpearson avatar monkeywithacupcake avatar mseaton avatar npokharel avatar ontic-soluciones avatar peterzhao avatar pmuchowski avatar spiekarczyk avatar waffle-iron avatar wvetrone avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openboxes's Issues

Reporting | NullPointerException: Cannot invoke method sort() on null object

2013-12-16 01:22:30,274 ERROR  GrailsExceptionResolver - Exception occurred when processing request: [GET] /openboxes/inventory/listOutOfStock
Stacktrace follows:
java.lang.NullPointerException: Cannot invoke method sort() on null object
    at org.pih.warehouse.inventory.InventoryService.getQuantityByProductAndInventoryItemMap(InventoryService.groovy:1087)
    at org.pih.warehouse.inventory.InventoryService$getQuantityByProductAndInventoryItemMap.callCurrent(Unknown Source)
    at org.pih.warehouse.inventory.InventoryService$getQuantityByProductAndInventoryItemMap.callCurrent(Unknown Source)
    at org.pih.warehouse.inventory.InventoryService.getQuantityByProductMap(InventoryService.groovy:1161)
    at org.pih.warehouse.inventory.InventoryService$$FastClassByCGLIB$$a7f866ff.invoke(<generated>)
    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
    at org.pih.warehouse.inventory.InventoryService$$EnhancerByCGLIB$$b44803aa.getQuantityByProductMap(<generated>)
    at org.pih.warehouse.inventory.InventoryService$getQuantityByProductMap.call(Unknown Source)
    at org.pih.warehouse.inventory.InventoryController$_closure22.doCall(InventoryController.groovy:454)
    at org.pih.warehouse.inventory.InventoryController$_closure22.doCall(InventoryController.groovy)
    at grails.plugin.springcache.web.GrailsFragmentCachingFilter.doFilter(GrailsFragmentCachingFilter.groovy:66)
    at net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:86)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
2013-12-16 01:22:30,274 [http-apr-8080-exec-1] ERROR errors.GrailsExceptionResolver  - Exception occurred when processing request: [GET] /openboxes/inventory/listOutOfStock

Cannot move items from unpacked to a pallet due error

Stacktrace:

org.codehaus.groovy.grails.web.errors.GrailsWrappedRuntimeException: not-null property references a null or transient value: org.pih.warehouse.shipping.ShipmentItem.shipment
    at org.codehaus.groovy.grails.web.errors.GrailsExceptionResolver.resolveException(GrailsExceptionResolver.java:79)
    at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:987)
    at org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet.doDispatch(GrailsDispatcherServlet.java:319)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at javax.servlet.FilterChain$doFilter.call(Unknown Source)
    at grails.plugin.springcache.web.GrailsFragmentCachingFilter.doFilter(GrailsFragmentCachingFilter.groovy:66)
    at net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:86)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
    at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(WebUtils.java:298)
    at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(WebUtils.java:264)
    at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(WebUtils.java:255)
    at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInternal(UrlMappingsFilter.java:183)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.obtainContent(GrailsPageFilter.java:245)
    at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFilter.java:134)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:65)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.opensymphony.clickstream.ClickstreamFilter.doFilter(ClickstreamFilter.java:56)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
    at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
    at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:776)
    at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:705)
    at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:898)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
    at java.lang.Thread.run(Thread.java:662)
Caused by: org.springframework.webflow.execution.ActionExecutionException: Exception thrown executing org.codehaus.groovy.grails.webflow.engine.builder.ClosureInvokingAction@dd07db in state 'moveItemAction' of flow 'createShipmentWorkflow/createShipment' -- action execution attributes were 'map[[empty]]'
    at grails.plugin.springcache.web.GrailsFragmentCachingFilter.doFilter(GrailsFragmentCachingFilter.groovy:66)
    at net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:86)
    at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
    at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
    at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:776)
    at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:705)
    at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:898)
    ... 1 more
Caused by: org.springframework.dao.DataIntegrityViolationException: not-null property references a null or transient value: org.pih.warehouse.shipping.ShipmentItem.shipment; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value: org.pih.warehouse.shipping.ShipmentItem.shipment
    at org.pih.warehouse.shipping.ShipmentService$$EnhancerByCGLIB$$14e9eadf.moveItem()
    at org.pih.warehouse.shipping.ShipmentService$moveItem.call(Unknown Source)
    at org.pih.warehouse.shipping.CreateShipmentWorkflowController$_closure2_closure20_closure66.doCall(CreateShipmentWorkflowController.groovy:665)
    ... 8 more
Caused by: org.hibernate.PropertyValueException: not-null property references a null or transient value: org.pih.warehouse.shipping.ShipmentItem.shipment
    ... 11 more

Database Tables Not All Set to the Same Engine

Outline

From scratch installation of database caused a foreign key creation error (see stack trace below); on closer inspection of the engine for the tables involved in the constraint creation 3 tables were found to NOT have the innoDB engine as their default, including requisition_item.
Before changing their engines I duplicated the error, in case this was caused by some other configuration issue.
Changing the engines of the tables involved in the constraint to match innoDb solved the problem.

Environment

Grails 1.3.7
STS 3.4.0
MySQL v5.1.63 Community Server (GPL)
Groovy Compiler v2.0
Liquibase v??

To Do

  1. Investigate Liquibase table creation code to determine if Engines are set explicitly.
  2. Re-create and confirm that the table creation indeed causes a mixture of Engines
  3. Whether this is a MySQL specific issue (impact to other back-end configurations for clients wanting to use another database Postgres, Oracle, etc)

Error executing SQL ALTER TABLE openboxes.fulfillment_item ADD CONSTRAINT FKEDC55CD447EBE106 FOREIGN KEY (requisition_item_id) REFERENCES openboxes.requisition_item(id):
Caused By: Error executing SQL ALTER TABLE openboxes.fulfillment_item ADD CONSTRAINT FKEDC55CD447EBE106 FOREIGN KEY (requisition_item_id) REFERENCES openboxes.requisition_item(id):
Caused By: Can't create table 'openboxes.#sql-f57_9b5' (errno: 150)

Connecting Orders to Shipping

Is is possible to connect an order to a shipment. So for example, we place the order, and we want to see that come into the container for shipping. We don't generally want item's to come in the shipment unless they were ordered, so searching through the inventory item's isn't desirable. Is it possible to connect orders to shipping thus that when you search you see a list of orders that were marked as purchased to add to the shipment?

OB Property file location should be property driven.

Outline:

In an attempt to leverage the white-boxing properties of the application the app.name property of the application.properties file was changed.
Regardless of the database connection settings in the openboxes-config.properties file, unless the app.name is set to openboxes the application fails to connect to the database.

Screenshots:

  1. Run with property set to openboxes (N.B. no changes to openboxes-config.properties):

screen shot 2013-12-22 at 4 54 22 pm_obdefectwhitelabeling_1_of_2

  1. Run with property set to something other (N.B. no changes to openboxes-config.properties):
    screen shot 2013-12-22 at 4 51 42 pm_obdefectwhitelabeling_2_of_2

Properties Context:

There are multiple properties files.

Purchase Order > HibernateException: Illegal attempt to associate a collection with two open sessions

Reported by Jesse Paulsen ([email protected]):

Stacktrace:

Error 500: 
Servlet: 
URI: 
Exception Message: Illegal attempt to associate a collection with two open sessions 
Caused by: Exception thrown executing org.codehaus.groovy.grails.webflow.engine.builder.ClosureInvokingAction@25fa0c1c in state 'confirmOrderReceipt' of flow 'receiveOrderWorkflow/receiveOrder' -- action execution attributes were 'map[[empty]]' 
Class: ReceiveOrderWorkflowController 
At Line: [100] 
Code Snippet:
org.springframework.webflow.execution.ActionExecutionException: Exception thrown executing org.codehaus.groovy.grails.webflow.engine.builder.ClosureInvokingAction@25fa0c1c in state 'confirmOrderReceipt' of flow 'receiveOrderWorkflow/receiveOrder' -- action execution attributes were 'map[[empty]]'
    at grails.plugin.springcache.web.GrailsFragmentCachingFilter.doFilter(GrailsFragmentCachingFilter.groovy:66)
    at net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:86)
    at java.lang.Thread.run(Unknown Source)
Caused by: org.springframework.orm.hibernate3.HibernateSystemException: Illegal attempt to associate a collection with two open sessions; nested exception is org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
    at org.pih.warehouse.inventory.InventoryService.findOrCreateInventoryItem(InventoryService.groovy:2040)
    at org.pih.warehouse.inventory.InventoryService$$FastClassByCGLIB$$a7f866ff.invoke(<generated>)
    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
    at org.pih.warehouse.inventory.InventoryService$$EnhancerByCGLIB$$25941301.findOrCreateInventoryItem(<generated>)
    at org.pih.warehouse.inventory.InventoryService$findOrCreateInventoryItem.call(Unknown Source)
    at org.pih.warehouse.order.OrderService$_saveOrderShipment_closure3_closure10.doCall(OrderService.groovy:136)
    at $Proxy17.doInHibernate(Unknown Source)
    at org.pih.warehouse.order.OrderService$_saveOrderShipment_closure3.doCall(OrderService.groovy:135)
    at org.pih.warehouse.order.OrderService.saveOrderShipment(OrderService.groovy:126)
    at org.pih.warehouse.order.OrderService$$FastClassByCGLIB$$ca942d1b.invoke(<generated>)
    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
    at org.pih.warehouse.order.OrderService$$EnhancerByCGLIB$$65f8d35.saveOrderShipment(<generated>)
    at org.pih.warehouse.order.OrderService$saveOrderShipment.call(Unknown Source)
    at org.pih.warehouse.order.ReceiveOrderWorkflowController$_closure2_closure6_closure13.doCall(ReceiveOrderWorkflowController.groovy:100)
    ... 3 more
Caused by: org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
    at $Proxy16.lock(Unknown Source)
    at $Proxy16.lock(Unknown Source)
    ... 17 more

Clicking Batch breadcrumb after clicking Import Product fails

Screen Shots:

  1. Breadcrumb
    screen shot 2013-12-21 at 1 22 24 pm_ob_breadcrumbdefect_1_of_2
  2. Result of Clicking on Batch
    screen shot 2013-12-21 at 1 23 53 pm_ob_breadcrumbdefect_2_of_2

OB Version:

© 2013 OpenBoxes | Application Version: 0.6.0.5 | Build Number: v0.5.6-349-g7d67720 | Environment: development | Build Date: 21 Dec 2013 10:17:50 AM Grails Version: 1.3.7 | Locale: English French Spanish | Debug Mode: off | IP Address: 0:0:0:0:0:0:0:1%0 | Data load: 0.3s | Page load: 0.728s

StackTrace:

2013-12-21 13:20:00,965 [http-8080-5] INFO filters.SecurityFilters - Request duration for (inventory/browse): 248ms/131ms
2013-12-21 13:20:01,055 [http-8080-5] INFO web.Timer - Cached request for /openboxes/grails/dashboard/megamenu.dispatch took 0:00:00.002
2013-12-21 13:20:01,750 [http-8080-5] INFO inventory.InventoryService - quantity on hand for location Boston Headquarters product 18 Inch Black Screw Driver
2013-12-21 13:20:01,778 [http-8080-5] INFO inventory.InventoryService - * getQuantityByProductAndInventoryItemMap(): 8 ms
2013-12-21 13:20:01,778 [http-8080-5] INFO inventory.InventoryService - getQuantityByProductMap(): 8 ms
2013-12-21 13:20:01,794 [http-8080-5] INFO filters.SecurityFilters - Request duration for (json/getQuantityOnHand): 57ms/2ms
2013-12-21 13:20:01,827 [http-8080-1] INFO filters.SecurityFilters - Request duration for (json/getQuantityToShip): 53ms/2ms
2013-12-21 13:20:01,838 [http-8080-6] INFO filters.SecurityFilters - Request duration for (json/getQuantityToReceive): 71ms/1ms
export products: "ID","SKU","Name","Category","Description","Unit of Measure","Manufacturer","Brand","Manufacturer Code","Manufacturer Name","Vendor","Vendor Code","Vendor Name","Cold Chain","UPC","NDC","Date Created","Date Updated"
"8a80808442e5a19e0142e6e3bd300001","BE75","18 Inch Black Screw Driver","Medical Equipment","Pleasure instrument.","each","ASDS","ASAS","","","","","","false","","","12/Dec/2013 02:59:14","14/Dec/2013 12:32:11"
2013-12-21 13:20:11,114 [http-8080-5] INFO filters.SecurityFilters - Request duration for (product/exportAsCsv): 699ms/1ms
2013-12-21 13:20:13,764 [http-8080-5] INFO batch.BatchController - ["type":"", "action":"importData", "controller":"batch"]
2013-12-21 13:20:13,764 [http-8080-5] INFO batch.BatchController - null
2013-12-21 13:20:14,493 [http-8080-5] INFO filters.SecurityFilters - Request duration for (batch/importData): 300ms/728ms
2013-12-21 13:20:14,553 [http-8080-5] INFO web.Timer - Cached request for /openboxes/grails/dashboard/megamenu.dispatch took 0:00:00.002
2013-12-21 13:20:15,588 [http-8080-1] INFO filters.SecurityFilters - Request duration for (errors/handleNotFound): 343ms/472ms
2013-12-21 13:20:15,595 [http-8080-6] INFO filters.SecurityFilters - Request duration for (errors/handleNotFound): 336ms/479ms
2013-12-21 13:20:15,631 [http-8080-5] INFO filters.SecurityFilters - Request duration for (errors/handleNotFound): 349ms/516ms
2013-12-21 13:20:15,869 [http-8080-6] INFO web.Timer - Cached request for /openboxes/grails/dashboard/megamenu.dispatch took 0:00:00.001
2013-12-21 13:20:15,874 [http-8080-1] INFO web.Timer - Cached request for /openboxes/grails/dashboard/megamenu.dispatch took 0:00:00.001
2013-12-21 13:20:16,006 [http-8080-5] INFO web.Timer - Cached request for /openboxes/grails/dashboard/megamenu.dispatch took 0:00:00.002
2013-12-21 13:20:51,984 [ContainerBackgroundProcessor[StandardEngine[Tomcat]]] ERROR clickstream.ClickstreamListener - Cannot get property 'request' on null object
java.lang.NullPointerException: Cannot get property 'request' on null object
at org.codehaus.groovy.runtime.NullObject.getProperty(NullObject.java:56)
at org.codehaus.groovy.runtime.InvokerHelper.getProperty(InvokerHelper.java:156)
at org.codehaus.groovy.runtime.callsite.NullCallSite.getProperty(NullCallSite.java:44)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:235)
at grails.plugins.clickstream.logger.ClickStreamLogger.log(ClickStreamLogger.groovy:15)
at com.opensymphony.clickstream.ClickstreamListener.sessionDestroyed(ClickstreamListener.java:111)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:684)
at org.apache.catalina.session.StandardSession.isValid(StandardSession.java:574)
at org.apache.catalina.session.ManagerBase.processExpires(ManagerBase.java:680)
at org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:665)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1316)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
at java.lang.Thread.run(Thread.java:680)
2013-12-21 13:23:49,732 [http-8080-5] INFO filters.SecurityFilters - Request duration for (batch/index): 11ms/62ms
2013-12-21 13:23:49,778 [http-8080-5] INFO filters.SecurityFilters - Request duration for (errors/handleNotFound): 6ms/15ms
2013-12-21 13:23:49,854 [http-8080-5] INFO web.Timer - Cached request for /openboxes/grails/dashboard/megamenu.dispatch took 0:00:00.002

Allow user to receive requested items into inventory

User Story summaries:

MUST

  • As a warehouse manager. I would like to receive X quantity of a shipment item as-is. (how it works currently) MUST
  • As a warehouse manager, I would like to add a comment to a receipt item. MUST (THIS ALREADY EXISTS)
  • As a warehouse manager, I would like to edit an existing lot number before shipment receipt. MUST
  • As a warehouse manager, I would like to edit an existing expiration date before shipment receipt. MUST
  • As a warehouse manager, I would like to add a lot number and an expiration date to a shipment items that was entered without this data before receiving a shipment MUST
  • As a warehouse manager, I would like to add a lot number and an expiration date to a shipment item that was entered as having one lot-date combination but actually has more than one combination upon physical inspection, before receiving a shipment MUST
  • As a warehouse manager, I would to delete a lot number and expiration date if a shipment item was entered as having multiple but actually has only one upon physical inspection, before receiving a shipment MUST

SHOULD

  • As a warehouse manager, I would like to add or subtract people as recipients of the automatically-generated shipment receipt email SHOULD
  • As a warehouse manager, I would like to mark X quantity of a shipment item as damaged. SHOULD
  • As a warehouse manager, I would like to mark X quantity of a shipment item as missing. SHOULD

COULD

  • As a warehouse manager, I would like to undo the receipt of a shipment item because I made an error. COULD (there is a workaround to this—rolling back the shipment, but this is all shipment items at the same time, not a specific item)
  • As a warehouse manager, I would like to return X quantity of a shipment item to the vendor. COULD

Inventory export reports no inventory to export, when inventory exists

ScreenShots Supporting Issue:

  1. Inventory Levels
    screen shot 2013-12-21 at 1 12 31 pm_inventorydefect_2_of_2
  2. Export Attempt (the response to it)
    screen shot 2013-12-21 at 1 13 00 pm_ob_inventory export defect_1of_2

OB Version:

© 2013 OpenBoxes | Application Version: 0.6.0.5 | Build Number: v0.5.6-349-g7d67720 | Environment: development | Build Date: 21 Dec 2013 10:17:50 AM Grails Version: 1.3.7 | Locale: English French Spanish | Debug Mode: off | IP Address: 0:0:0:0:0:0:0:1%0 | Data load: 0.3s | Page load: 0.728s

Stacktrace:

2013-12-21 13:12:22,766 [http-8080-3] INFO inventory.InventoryService - searchTerms = null
2013-12-21 13:12:22,766 [http-8080-3] INFO inventory.InventoryService - command.tag = null
2013-12-21 13:12:22,849 [http-8080-3] INFO inventory.InventoryService - * Get all categories: 83 ms
2013-12-21 13:12:22,886 [http-8080-3] INFO inventory.InventoryService - * Query for products: 37 ms
2013-12-21 13:12:22,886 [http-8080-3] INFO inventory.InventoryService - * Get unique IDs: 0 ms
2013-12-21 13:12:22,886 [http-8080-3] INFO inventory.InventoryService - Max 10
2013-12-21 13:12:22,886 [http-8080-3] INFO inventory.InventoryService - Offset 0
2013-12-21 13:12:22,919 [http-8080-3] INFO inventory.InventoryService - * Re-query for products by ID: 33 ms
2013-12-21 13:12:22,919 [http-8080-3] INFO inventory.InventoryService - * Get products by terms and categories: 70 ms
2013-12-21 13:12:22,923 [http-8080-3] INFO inventory.InventoryService - * After removing all hidden products: 3 ms
2013-12-21 13:12:22,923 [http-8080-3] INFO inventory.InventoryService - * Sort products 0 ms
2013-12-21 13:12:22,923 [http-8080-3] INFO inventory.InventoryService - * Get quantity on hand map 0 ms
2013-12-21 13:12:22,923 [http-8080-3] INFO inventory.InventoryService - * Get outgoing map 0 ms
2013-12-21 13:12:22,924 [http-8080-3] INFO inventory.InventoryService - * Get incoming map: 0 ms
2013-12-21 13:12:22,928 [http-8080-3] INFO inventory.InventoryService - * process product : 1 ms
2013-12-21 13:12:22,928 [http-8080-3] INFO inventory.InventoryService - * process on hand quantity: 1 ms
2013-12-21 13:12:22,928 [http-8080-3] INFO inventory.InventoryService - * Get category to product map: 0 ms
2013-12-21 13:12:22,928 [http-8080-3] INFO inventory.InventoryService - Total time - Get current inventory: 162 ms
SQLQueryImpl(select tag.id, count(*)
from product_tag join tag on tag.id = product_tag.tag_id
where tag.is_active = true
group by tag.tag order by tag.tag)
2013-12-21 13:12:24,979 [http-8080-2] INFO filters.SecurityFilters - Request duration for (inventory/browse): 1519ms/2961ms
2013-12-21 13:12:24,980 [http-8080-3] INFO filters.SecurityFilters - Request duration for (inventory/browse): 317ms/1973ms
2013-12-21 13:12:25,133 [http-8080-3] INFO web.Timer - Cached request for /openboxes/grails/dashboard/megamenu.dispatch took 0:00:00.003
2013-12-21 13:12:25,195 [http-8080-2] INFO web.Timer - Cached request for /openboxes/grails/dashboard/megamenu.dispatch took 0:00:00.008
2013-12-21 13:12:25,761 [http-8080-3] INFO inventory.InventoryService - quantity on hand for location Boston Headquarters product 18 Inch Black Screw Driver
2013-12-21 13:12:25,833 [http-8080-3] INFO inventory.InventoryService - * getQuantityByProductAndInventoryItemMap(): 8 ms
2013-12-21 13:12:25,839 [http-8080-3] INFO inventory.InventoryService - getQuantityByProductMap(): 15 ms
2013-12-21 13:12:25,868 [http-8080-4] INFO filters.SecurityFilters - Request duration for (json/getQuantityToReceive): 210ms/2ms
2013-12-21 13:12:25,875 [http-8080-3] INFO filters.SecurityFilters - Request duration for (json/getQuantityOnHand): 259ms/1ms
2013-12-21 13:12:25,991 [http-8080-2] INFO filters.SecurityFilters - Request duration for (json/getQuantityToShip): 287ms/2ms
2013-12-21 13:12:51,696 [http-8080-5] INFO filters.SecurityFilters - Request duration for (inventoryLevel/export): 292ms/1ms

Allow sysadmin to override grails.config.locations using command line argument or env property

Outline:

It might not always be possible to setup a directory .grails in the Tomcat home in order to configure open-boxes due to operational restrictions. Given the fact that the data source specification and others reside in this properties file, without it the application (don't think) can connect to the underlying db.

Solutions:

Hard coding a default solutions is not a good idea (in case the code can not find the properties).
Instead, and given the nature of a previous defect regarding properties files, this property fils should be amalgamated with the one in the application.properties file.
This way, deployment would become more streamlined.

NullPointerException: Cannot get property 'inventoryItem' on null object

Email from Kelsey

I have been trying to run a consumption report in the Malawi instance of open boxes, but every time I try I get an error. The error reads as follows:

java.lang.NullPointerException: Cannot get property 'inventoryItem' on null object
        at org.pih.warehouse.reporting.ConsumptionController$_closure1_closure5_closure10.doCall(ConsumptionController.groovy:116)
        at org.pih.warehouse.reporting.ConsumptionController$_closure1_closure5.doCall(ConsumptionController.groovy:115)
        at org.pih.warehouse.reporting.ConsumptionController$_closure1.doCall(ConsumptionController.groovy:104)
        at org.pih.warehouse.reporting.ConsumptionController$_closure1.call(ConsumptionController.groovy)
        at grails.plugin.springcache.web.GrailsFragmentCachingFilter.doFilter(GrailsFragmentCachingFilter.groovy:66)
        at net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:86)
        at java.lang.Thread.run(Thread.java:662)

Cannot move an item from a pallet to a box within that pallet

Kelsey wrote:

Tried to move an item from a Pallet to a box within that pallet and got an error message.

Stacktrace:

org.codehaus.groovy.grails.web.errors.GrailsWrappedRuntimeException: not-null property references a null or transient value: org.pih.warehouse.shipping.ShipmentItem.shipment
    at org.codehaus.groovy.grails.web.errors.GrailsExceptionResolver.resolveException(GrailsExceptionResolver.java:79)
    at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:987)
    at org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet.doDispatch(GrailsDispatcherServlet.java:319)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at javax.servlet.FilterChain$doFilter.call(Unknown Source)
    at grails.plugin.springcache.web.GrailsFragmentCachingFilter.doFilter(GrailsFragmentCachingFilter.groovy:66)
    at net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:86)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
    at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(WebUtils.java:298)
    at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(WebUtils.java:264)
    at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(WebUtils.java:255)
    at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInternal(UrlMappingsFilter.java:183)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.obtainContent(GrailsPageFilter.java:245)
    at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFilter.java:134)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:65)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.opensymphony.clickstream.ClickstreamFilter.doFilter(ClickstreamFilter.java:56)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
    at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
    at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:776)
    at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:705)
    at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:898)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
    at java.lang.Thread.run(Thread.java:662)
Caused by: org.springframework.webflow.execution.ActionExecutionException: Exception thrown executing org.codehaus.groovy.grails.webflow.engine.builder.ClosureInvokingAction@11ef846 in state 'moveItemAction' of flow 'createShipmentWorkflow/createShipment' -- action execution attributes were 'map[[empty]]'
    at grails.plugin.springcache.web.GrailsFragmentCachingFilter.doFilter(GrailsFragmentCachingFilter.groovy:66)
    at net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:86)
    at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
    at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
    at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:776)
    at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:705)
    at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:898)
    ... 1 more
Caused by: org.springframework.dao.DataIntegrityViolationException: not-null property references a null or transient value: org.pih.warehouse.shipping.ShipmentItem.shipment; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value: org.pih.warehouse.shipping.ShipmentItem.shipment
    at org.pih.warehouse.shipping.ShipmentService$$EnhancerByCGLIB$$a46b9840.moveItem()
    at org.pih.warehouse.shipping.ShipmentService$moveItem.call(Unknown Source)
    at org.pih.warehouse.shipping.CreateShipmentWorkflowController$_closure2_closure20_closure66.doCall(CreateShipmentWorkflowController.groovy:665)
    ... 8 more
Caused by: org.hibernate.PropertyValueException: not-null property references a null or transient value: org.pih.warehouse.shipping.ShipmentItem.shipment
    ... 11 more

Mixed Content: The page was loaded over HTTPS, but requested an insecure resource. This request has been blocked; the content must be served over HTTPS.

index:1 Mixed Content: The page at 'https://obstaging.pih-emr.org/openboxes/dashboard/index?' was loaded over HTTPS, but requested an insecure resource 'http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.4/css/jquery.dataTables.css'. This request has been blocked; the content must be served over HTTPS.
index:1 Mixed Content: The page at 'https://obstaging.pih-emr.org/openboxes/dashboard/index?' was loaded over HTTPS, but requested an insecure resource 'http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.4/jquery.dataTables.js'. This request has been blocked; the content must be served over HTTPS.
index:1 Consider using 'dppx' units, as in CSS 'dpi' means dots-per-CSS-inch, not dots-per-physical-inch, so does not correspond to the actual 'dpi' of a screen. In media query expression: only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 144dpi)
index:47 Mixed Content: The page at 'https://obstaging.pih-emr.org/openboxes/dashboard/index?' was loaded over HTTPS, but requested an insecure stylesheet 'http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.4/css/jquery.dataTables.css'. This request has been blocked; the content must be served over HTTPS.
index:1386 Mixed Content: The page at 'https://obstaging.pih-emr.org/openboxes/dashboard/index?' was loaded over HTTPS, but requested an insecure stylesheet 'http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.4/css/jquery.dataTables.css'. This request has been blocked; the content must be served over HTTPS.
index:1 Mixed Content: The page at 'https://obstaging.pih-emr.org/openboxes/dashboard/index?' was loaded over HTTPS, but requested an insecure script 'http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.4/jquery.dataTables.js'. This request has been blocked; the content must be served over HTTPS.
index:1441 Uncaught TypeError: undefined is not a function

New contributor git instructions in Readme should be updated as command fails

Probable Cause:

SSH setup for accessing the repo not specified or TBD by administrator.

Command Output:

Shahri-MacBookPro:Repos Shahri$ git clone [email protected]:PIH/openboxes.git
Cloning into 'openboxes'...
Warning: Permanently added the RSA host key for IP address '192.30.252.129' to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.'''

Shipping > Error occurred while generating shipment report

Parameters

Date: Mar-19-2015 14:08:41.717
Thread: [ajp-bio-8009-exec-321]
Username: pglondu
Location: Toulouse
Locale: fr
Request URI: /openboxes/grails/report/downloadShippingReport.dispatch
Request URL: http://demo.openboxes.com/openboxes/grails/report/downloadShippingReport.dispatch
Query string: format=pdf&url=%2Fopenboxes%2Freport%2FshowShippingReport&shipment.id=c1e3443444fab198014503e28f130017
Server: http://demo.openboxes.com/openboxes

Stacktrace

Cannot generate pdf due to error: internal error
java.lang.RuntimeException: internal error
        at org.docx4j.org.xhtmlrenderer.render.Box.initContainingLayer(Box.java:472)
        at org.docx4j.org.xhtmlrenderer.newtable.TableBox.layoutRunningHeader(TableBox.java:326)
        at org.docx4j.org.xhtmlrenderer.newtable.TableBox.layoutChildren(TableBox.java:304)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:818)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:735)
        at org.docx4j.org.xhtmlrenderer.newtable.TableBox.layoutTable(TableBox.java:282)
        at org.docx4j.org.xhtmlrenderer.newtable.TableBox.layout(TableBox.java:242)
        at org.docx4j.org.xhtmlrenderer.layout.BlockBoxing.layoutContent(BlockBoxing.java:61)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layoutChildren(BlockBox.java:947)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:818)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:735)
        at org.docx4j.org.xhtmlrenderer.layout.BlockBoxing.layoutContent(BlockBoxing.java:61)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layoutChildren(BlockBox.java:947)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:818)
        at org.docx4j.org.xhtmlrenderer.newtable.TableRowBox.layoutCell(TableRowBox.java:453)
        at org.docx4j.org.xhtmlrenderer.newtable.TableRowBox.layoutChildren(TableRowBox.java:206)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:818)
        at org.docx4j.org.xhtmlrenderer.newtable.TableRowBox.layout(TableRowBox.java:89)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:735)
        at org.docx4j.org.xhtmlrenderer.layout.BlockBoxing.layoutContent(BlockBoxing.java:61)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layoutChildren(BlockBox.java:947)
        at org.docx4j.org.xhtmlrenderer.newtable.TableSectionBox.layoutChildren(TableSectionBox.java:139)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:818)
        at org.docx4j.org.xhtmlrenderer.newtable.TableSectionBox.layout(TableSectionBox.java:275)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:735)
        at org.docx4j.org.xhtmlrenderer.layout.BlockBoxing.layoutContent(BlockBoxing.java:61)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layoutChildren(BlockBox.java:947)
        at org.docx4j.org.xhtmlrenderer.newtable.TableBox.layoutChildren(TableBox.java:316)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:818)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:735)
        at org.docx4j.org.xhtmlrenderer.newtable.TableBox.layoutTable(TableBox.java:282)
        at org.docx4j.org.xhtmlrenderer.newtable.TableBox.layout(TableBox.java:242)
        at org.docx4j.org.xhtmlrenderer.layout.BlockBoxing.layoutContent(BlockBoxing.java:61)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layoutChildren(BlockBox.java:947)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:818)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:735)
        at org.docx4j.org.xhtmlrenderer.layout.BlockBoxing.layoutContent(BlockBoxing.java:61)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layoutChildren(BlockBox.java:947)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:818)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:735)
        at org.docx4j.org.xhtmlrenderer.layout.BlockBoxing.layoutContent(BlockBoxing.java:61)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layoutChildren(BlockBox.java:947)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:818)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:735)
        at org.docx4j.org.xhtmlrenderer.layout.BlockBoxing.layoutContent(BlockBoxing.java:61)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layoutChildren(BlockBox.java:947)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:818)
        at org.docx4j.org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:735)
        at org.docx4j.org.xhtmlrenderer.pdf.ITextRenderer.layout(ITextRenderer.java:216)
        at org.docx4j.org.xhtmlrenderer.pdf.ITextRenderer$layout.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
        at org.pih.warehouse.report.ReportService.generatePdf(ReportService.groovy:288)
        at org.pih.warehouse.report.ReportService$$FastClassByCGLIB$$d3c4795b.invoke(<generated>)
        at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
        at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621)
        at org.pih.warehouse.report.ReportService$$EnhancerByCGLIB$$bb6163a6.generatePdf(<generated>)
        at org.pih.warehouse.report.ReportService$generatePdf.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)
        at org.pih.warehouse.reporting.ReportController$_closure12.doCall(ReportController.groovy:256)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:225)
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:51)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:149)
        at org.pih.warehouse.reporting.ReportController$_closure12.doCall(ReportController.groovy)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1058)
        at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1070)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
        at groovy.lang.Closure.call(Closure.java:282)
        at groovy.lang.Closure.call(Closure.java:277)
        at org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsControllerHelper.handleAction(SimpleGrailsControllerHelper.java:368)
        at org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsControllerHelper.executeAction(SimpleGrailsControllerHelper.java:232)
        at org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsControllerHelper.handleURI(SimpleGrailsControllerHelper.java:190)
        at org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsControllerHelper.handleURI(SimpleGrailsControllerHelper.java:129)
        at org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsController.handleRequest(SimpleGrailsController.java:73)
        at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
        at org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet.doDispatch(GrailsDispatcherServlet.java:292)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at javax.servlet.FilterChain$doFilter.call(Unknown Source)
        at grails.plugin.springcache.web.GrailsFragmentCachingFilter.doFilter(GrailsFragmentCachingFilter.groovy:66)
        at net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:86)
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
        at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
        at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(WebUtils.java:298)
        at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(WebUtils.java:264)
        at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(WebUtils.java:255)
        at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInternal(UrlMappingsFilter.java:183)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.obtainContent(GrailsPageFilter.java:245)
        at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFilter.java:134)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:69)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at com.opensymphony.clickstream.ClickstreamFilter.doFilter(ClickstreamFilter.java:56)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
        at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)

Mark as consumed

When you click on "Mark as consumed" the next windows show all lots of items even if lots have not stock. If you have a lot of lots, this is not user-friendly.

"Consumption Window" will be more user-friendly if will not show the unnecessary items.

20140807_20 14 24_selection

"Consumption Window":
20140807_19 53 14_selection

StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.mindinformatics.ann.framework.module.persistence.Annotation#58926]

URL:

/catch/annotator/update/58926`

HTTP referrer:

https://courses.edx.org/courses/HarvardX/HUM2.1x/3T2014/courseware/22629096118e49958b4e39f4a01297ab/9143c9c6563344bfa9e0d6ebd2e1316b/

Stacktrace:

…rvlet.mvc.AbstractGrailsControllerHelper.executeAction (AbstractGrailsControllerHelper.java:222)
…b.servlet.mvc.AbstractGrailsControllerHelper.handleURI (AbstractGrailsControllerHelper.java:183)
…b.servlet.mvc.AbstractGrailsControllerHelper.handleURI (AbstractGrailsControllerHelper.java:116)
…s.web.servlet.mvc.SimpleGrailsController.handleRequest (SimpleGrailsController.java:72)
….web.servlet.mvc.SimpleControllerHandlerAdapter.handle (SimpleControllerHandlerAdapter.java:48)
….grails.web.servlet.GrailsDispatcherServlet.doDispatch (GrailsDispatcherServlet.java:328)
…pringframework.web.servlet.DispatcherServlet.doService (DispatcherServlet.java:852)
…gframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:882)
 org.springframework.web.servlet.FrameworkServlet.doPut (FrameworkServlet.java:800)
                 javax.servlet.http.HttpServlet.service (HttpServlet.java:644)
                 javax.servlet.http.HttpServlet.service (HttpServlet.java:722)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:305)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…ringframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:70)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…ringframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:70)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…s.plugins.httplogger.filters.HttpLoggerFilter.doFilter (HttpLoggerFilter.java:47)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
  org.apache.catalina.core.ApplicationDispatcher.invoke (ApplicationDispatcher.java:684)
…che.catalina.core.ApplicationDispatcher.processRequest (ApplicationDispatcher.java:471)
…g.apache.catalina.core.ApplicationDispatcher.doForward (ApplicationDispatcher.java:402)
 org.apache.catalina.core.ApplicationDispatcher.forward (ApplicationDispatcher.java:329)
…ails.web.util.WebUtils.forwardRequestForUrlMappingInfo (WebUtils.java:314)
…ails.web.util.WebUtils.forwardRequestForUrlMappingInfo (WebUtils.java:279)
…ails.web.util.WebUtils.forwardRequestForUrlMappingInfo (WebUtils.java:270)
….web.mapping.filter.UrlMappingsFilter.doFilterInternal (UrlMappingsFilter.java:221)
…ringframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:76)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…ovy.grails.web.sitemesh.GrailsPageFilter.obtainContent (GrailsPageFilter.java:200)
…s.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter (GrailsPageFilter.java:151)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:330)
….web.access.intercept.FilterSecurityInterceptor.invoke (FilterSecurityInterceptor.java:118)
…eb.access.intercept.FilterSecurityInterceptor.doFilter (FilterSecurityInterceptor.java:84)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…ecurity.web.access.ExceptionTranslationFilter.doFilter (ExceptionTranslationFilter.java:113)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…eb.filter.GrailsAnonymousAuthenticationFilter.doFilter (GrailsAnonymousAuthenticationFilter.java:53)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…ion.rememberme.RememberMeAuthenticationFilter.doFilter (RememberMeAuthenticationFilter.java:139)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…etapi.SecurityContextHolderAwareRequestFilter.doFilter (SecurityContextHolderAwareRequestFilter.java:150)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…cation.AbstractAuthenticationProcessingFilter.doFilter (AbstractAuthenticationProcessingFilter.java:199)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…cation.AbstractAuthenticationProcessingFilter.doFilter (AbstractAuthenticationProcessingFilter.java:199)
…hentication.RequestHolderAuthenticationFilter.doFilter (RequestHolderAuthenticationFilter.java:49)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…web.authentication.logout.MutableLogoutFilter.doFilter (MutableLogoutFilter.java:82)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
….web.context.SecurityContextPersistenceFilter.doFilter (SecurityContextPersistenceFilter.java:87)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…amework.security.web.FilterChainProxy.doFilterInternal (FilterChainProxy.java:192)
…springframework.security.web.FilterChainProxy.doFilter (FilterChainProxy.java:160)
…mework.web.filter.DelegatingFilterProxy.invokeDelegate (DelegatingFilterProxy.java:346)
…ingframework.web.filter.DelegatingFilterProxy.doFilter (DelegatingFilterProxy.java:259)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…eb.servlet.mvc.GrailsWebRequestFilter.doFilterInternal (GrailsWebRequestFilter.java:69)
…ringframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:76)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…s.plugins.httplogger.filters.HttpLoggerFilter.doFilter (HttpLoggerFilter.java:44)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…s.plugins.httplogger.filters.HttpLoggerFilter.doFilter (HttpLoggerFilter.java:44)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
                 com.brandseye.cors.CorsFilter.doFilter (CorsFilter.java:75)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…rk.web.filter.CharacterEncodingFilter.doFilterInternal (CharacterEncodingFilter.java:88)
…ringframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:76)
…mework.web.filter.DelegatingFilterProxy.invokeDelegate (DelegatingFilterProxy.java:346)
…ingframework.web.filter.DelegatingFilterProxy.doFilter (DelegatingFilterProxy.java:259)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
   org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:224)
   org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:169)
      org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:168)
     org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:98)
       org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:927)
    org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:118)
    org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:407)
…g.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:987)
…ote.AbstractProtocol$AbstractConnectionHandler.process (AbstractProtocol.java:579)
…apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run (JIoEndpoint.java:307)
      java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1146)
     java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:615)
                                   java.lang.Thread.run (Thread.java:701)

caused by org.codehaus.groovy.grails.web.servlet.mvc.exceptions.ControllerExecutionException: Runtime error executing action
…ils.web.servlet.mvc.MixedGrailsControllerHelper.invoke (MixedGrailsControllerHelper.java:73)
…ervlet.mvc.AbstractGrailsControllerHelper.handleAction (AbstractGrailsControllerHelper.java:334)
…rvlet.mvc.AbstractGrailsControllerHelper.executeAction (AbstractGrailsControllerHelper.java:217)
…b.servlet.mvc.AbstractGrailsControllerHelper.handleURI (AbstractGrailsControllerHelper.java:183)
…b.servlet.mvc.AbstractGrailsControllerHelper.handleURI (AbstractGrailsControllerHelper.java:116)
…s.web.servlet.mvc.SimpleGrailsController.handleRequest (SimpleGrailsController.java:72)
….web.servlet.mvc.SimpleControllerHandlerAdapter.handle (SimpleControllerHandlerAdapter.java:48)
….grails.web.servlet.GrailsDispatcherServlet.doDispatch (GrailsDispatcherServlet.java:328)
…pringframework.web.servlet.DispatcherServlet.doService (DispatcherServlet.java:852)
…gframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:882)
 org.springframework.web.servlet.FrameworkServlet.doPut (FrameworkServlet.java:800)
                 javax.servlet.http.HttpServlet.service (HttpServlet.java:644)
                 javax.servlet.http.HttpServlet.service (HttpServlet.java:722)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:305)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…ringframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:70)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…ringframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:70)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…s.plugins.httplogger.filters.HttpLoggerFilter.doFilter (HttpLoggerFilter.java:47)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
  org.apache.catalina.core.ApplicationDispatcher.invoke (ApplicationDispatcher.java:684)
…che.catalina.core.ApplicationDispatcher.processRequest (ApplicationDispatcher.java:471)
…g.apache.catalina.core.ApplicationDispatcher.doForward (ApplicationDispatcher.java:402)
 org.apache.catalina.core.ApplicationDispatcher.forward (ApplicationDispatcher.java:329)
…ails.web.util.WebUtils.forwardRequestForUrlMappingInfo (WebUtils.java:314)
…ails.web.util.WebUtils.forwardRequestForUrlMappingInfo (WebUtils.java:279)
…ails.web.util.WebUtils.forwardRequestForUrlMappingInfo (WebUtils.java:270)
….web.mapping.filter.UrlMappingsFilter.doFilterInternal (UrlMappingsFilter.java:221)
…ringframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:76)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…ovy.grails.web.sitemesh.GrailsPageFilter.obtainContent (GrailsPageFilter.java:200)
…s.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter (GrailsPageFilter.java:151)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:330)
….web.access.intercept.FilterSecurityInterceptor.invoke (FilterSecurityInterceptor.java:118)
…eb.access.intercept.FilterSecurityInterceptor.doFilter (FilterSecurityInterceptor.java:84)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…ecurity.web.access.ExceptionTranslationFilter.doFilter (ExceptionTranslationFilter.java:113)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…eb.filter.GrailsAnonymousAuthenticationFilter.doFilter (GrailsAnonymousAuthenticationFilter.java:53)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…ion.rememberme.RememberMeAuthenticationFilter.doFilter (RememberMeAuthenticationFilter.java:139)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…etapi.SecurityContextHolderAwareRequestFilter.doFilter (SecurityContextHolderAwareRequestFilter.java:150)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…cation.AbstractAuthenticationProcessingFilter.doFilter (AbstractAuthenticationProcessingFilter.java:199)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…cation.AbstractAuthenticationProcessingFilter.doFilter (AbstractAuthenticationProcessingFilter.java:199)
…hentication.RequestHolderAuthenticationFilter.doFilter (RequestHolderAuthenticationFilter.java:49)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…web.authentication.logout.MutableLogoutFilter.doFilter (MutableLogoutFilter.java:82)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
….web.context.SecurityContextPersistenceFilter.doFilter (SecurityContextPersistenceFilter.java:87)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…amework.security.web.FilterChainProxy.doFilterInternal (FilterChainProxy.java:192)
…springframework.security.web.FilterChainProxy.doFilter (FilterChainProxy.java:160)
…mework.web.filter.DelegatingFilterProxy.invokeDelegate (DelegatingFilterProxy.java:346)
…ingframework.web.filter.DelegatingFilterProxy.doFilter (DelegatingFilterProxy.java:259)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…eb.servlet.mvc.GrailsWebRequestFilter.doFilterInternal (GrailsWebRequestFilter.java:69)
…ringframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:76)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…s.plugins.httplogger.filters.HttpLoggerFilter.doFilter (HttpLoggerFilter.java:44)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…s.plugins.httplogger.filters.HttpLoggerFilter.doFilter (HttpLoggerFilter.java:44)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
                 com.brandseye.cors.CorsFilter.doFilter (CorsFilter.java:75)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…rk.web.filter.CharacterEncodingFilter.doFilterInternal (CharacterEncodingFilter.java:88)
…ringframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:76)
…mework.web.filter.DelegatingFilterProxy.invokeDelegate (DelegatingFilterProxy.java:346)
…ingframework.web.filter.DelegatingFilterProxy.doFilter (DelegatingFilterProxy.java:259)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
   org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:224)
   org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:169)
      org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:168)
     org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:98)
       org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:927)
    org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:118)
    org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:407)
…g.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:987)
…ote.AbstractProtocol$AbstractConnectionHandler.process (AbstractProtocol.java:579)
…apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run (JIoEndpoint.java:307)
      java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1146)
     java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:615)
                                   java.lang.Thread.run (Thread.java:701)

caused by java.lang.reflect.InvocationTargetException
           sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
            sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57)
        sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
                        java.lang.reflect.Method.invoke (Method.java:622)
…ils.web.servlet.mvc.MixedGrailsControllerHelper.invoke (MixedGrailsControllerHelper.java:69)
…ervlet.mvc.AbstractGrailsControllerHelper.handleAction (AbstractGrailsControllerHelper.java:334)
…rvlet.mvc.AbstractGrailsControllerHelper.executeAction (AbstractGrailsControllerHelper.java:217)
…b.servlet.mvc.AbstractGrailsControllerHelper.handleURI (AbstractGrailsControllerHelper.java:183)
…b.servlet.mvc.AbstractGrailsControllerHelper.handleURI (AbstractGrailsControllerHelper.java:116)
…s.web.servlet.mvc.SimpleGrailsController.handleRequest (SimpleGrailsController.java:72)
….web.servlet.mvc.SimpleControllerHandlerAdapter.handle (SimpleControllerHandlerAdapter.java:48)
….grails.web.servlet.GrailsDispatcherServlet.doDispatch (GrailsDispatcherServlet.java:328)
…pringframework.web.servlet.DispatcherServlet.doService (DispatcherServlet.java:852)
…gframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:882)
 org.springframework.web.servlet.FrameworkServlet.doPut (FrameworkServlet.java:800)
                 javax.servlet.http.HttpServlet.service (HttpServlet.java:644)
                 javax.servlet.http.HttpServlet.service (HttpServlet.java:722)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:305)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…ringframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:70)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…ringframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:70)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…s.plugins.httplogger.filters.HttpLoggerFilter.doFilter (HttpLoggerFilter.java:47)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
  org.apache.catalina.core.ApplicationDispatcher.invoke (ApplicationDispatcher.java:684)
…che.catalina.core.ApplicationDispatcher.processRequest (ApplicationDispatcher.java:471)
…g.apache.catalina.core.ApplicationDispatcher.doForward (ApplicationDispatcher.java:402)
 org.apache.catalina.core.ApplicationDispatcher.forward (ApplicationDispatcher.java:329)
…ails.web.util.WebUtils.forwardRequestForUrlMappingInfo (WebUtils.java:314)
…ails.web.util.WebUtils.forwardRequestForUrlMappingInfo (WebUtils.java:279)
…ails.web.util.WebUtils.forwardRequestForUrlMappingInfo (WebUtils.java:270)
….web.mapping.filter.UrlMappingsFilter.doFilterInternal (UrlMappingsFilter.java:221)
…ringframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:76)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…ovy.grails.web.sitemesh.GrailsPageFilter.obtainContent (GrailsPageFilter.java:200)
…s.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter (GrailsPageFilter.java:151)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:330)
….web.access.intercept.FilterSecurityInterceptor.invoke (FilterSecurityInterceptor.java:118)
…eb.access.intercept.FilterSecurityInterceptor.doFilter (FilterSecurityInterceptor.java:84)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…ecurity.web.access.ExceptionTranslationFilter.doFilter (ExceptionTranslationFilter.java:113)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…eb.filter.GrailsAnonymousAuthenticationFilter.doFilter (GrailsAnonymousAuthenticationFilter.java:53)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…ion.rememberme.RememberMeAuthenticationFilter.doFilter (RememberMeAuthenticationFilter.java:139)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…etapi.SecurityContextHolderAwareRequestFilter.doFilter (SecurityContextHolderAwareRequestFilter.java:150)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…cation.AbstractAuthenticationProcessingFilter.doFilter (AbstractAuthenticationProcessingFilter.java:199)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…cation.AbstractAuthenticationProcessingFilter.doFilter (AbstractAuthenticationProcessingFilter.java:199)
…hentication.RequestHolderAuthenticationFilter.doFilter (RequestHolderAuthenticationFilter.java:49)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…web.authentication.logout.MutableLogoutFilter.doFilter (MutableLogoutFilter.java:82)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
….web.context.SecurityContextPersistenceFilter.doFilter (SecurityContextPersistenceFilter.java:87)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…amework.security.web.FilterChainProxy.doFilterInternal (FilterChainProxy.java:192)
…springframework.security.web.FilterChainProxy.doFilter (FilterChainProxy.java:160)
…mework.web.filter.DelegatingFilterProxy.invokeDelegate (DelegatingFilterProxy.java:346)
…ingframework.web.filter.DelegatingFilterProxy.doFilter (DelegatingFilterProxy.java:259)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…eb.servlet.mvc.GrailsWebRequestFilter.doFilterInternal (GrailsWebRequestFilter.java:69)
…ringframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:76)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…s.plugins.httplogger.filters.HttpLoggerFilter.doFilter (HttpLoggerFilter.java:44)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…s.plugins.httplogger.filters.HttpLoggerFilter.doFilter (HttpLoggerFilter.java:44)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
                 com.brandseye.cors.CorsFilter.doFilter (CorsFilter.java:75)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…rk.web.filter.CharacterEncodingFilter.doFilterInternal (CharacterEncodingFilter.java:88)
…ringframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:76)
…mework.web.filter.DelegatingFilterProxy.invokeDelegate (DelegatingFilterProxy.java:346)
…ingframework.web.filter.DelegatingFilterProxy.doFilter (DelegatingFilterProxy.java:259)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
   org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:224)
   org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:169)
      org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:168)
     org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:98)
       org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:927)
    org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:118)
    org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:407)
…g.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:987)
…ote.AbstractProtocol$AbstractConnectionHandler.process (AbstractProtocol.java:579)
…apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run (JIoEndpoint.java:307)
      java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1146)
     java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:615)
                                   java.lang.Thread.run (Thread.java:701)

caused by org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException: Object of class [org.mindinformatics.ann.framework.module.persistence.Annotation] with identifier [58926]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.mindinformatics.ann.framework.module.persistence.Annotation#58926]
…e3.SessionFactoryUtils.convertHibernateAccessException (SessionFactoryUtils.java:683)
…nateTransactionManager.convertHibernateAccessException (HibernateTransactionManager.java:793)
…rk.orm.hibernate3.HibernateTransactionManager.doCommit (HibernateTransactionManager.java:664)
…pport.AbstractPlatformTransactionManager.processCommit (AbstractPlatformTransactionManager.java:754)
…tion.support.AbstractPlatformTransactionManager.commit (AbstractPlatformTransactionManager.java:723)
…ansactionAspectSupport.commitTransactionAfterReturning (TransactionAspectSupport.java:387)
….transaction.interceptor.TransactionInterceptor.invoke (TransactionInterceptor.java:120)
…ework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:172)
…ork.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept (Cglib2AopProxy.java:622)
org.mindinformatics.ann.framework.module.persistence.AnnotatorService$$EnhancerByCGLIB$$e5167b00.update(<generated>)
…mework.module.persistence.AnnotatorService$update.call (Unknown Source)
org.mindinformatics.ann.framework.module.persistence.AnnotatorController.update(AnnotatorController.groovy:168)
           sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
            sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57)
        sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
                        java.lang.reflect.Method.invoke (Method.java:622)
…ils.web.servlet.mvc.MixedGrailsControllerHelper.invoke (MixedGrailsControllerHelper.java:69)
…ervlet.mvc.AbstractGrailsControllerHelper.handleAction (AbstractGrailsControllerHelper.java:334)
…rvlet.mvc.AbstractGrailsControllerHelper.executeAction (AbstractGrailsControllerHelper.java:217)
…b.servlet.mvc.AbstractGrailsControllerHelper.handleURI (AbstractGrailsControllerHelper.java:183)
…b.servlet.mvc.AbstractGrailsControllerHelper.handleURI (AbstractGrailsControllerHelper.java:116)
…s.web.servlet.mvc.SimpleGrailsController.handleRequest (SimpleGrailsController.java:72)
….web.servlet.mvc.SimpleControllerHandlerAdapter.handle (SimpleControllerHandlerAdapter.java:48)
….grails.web.servlet.GrailsDispatcherServlet.doDispatch (GrailsDispatcherServlet.java:328)
…pringframework.web.servlet.DispatcherServlet.doService (DispatcherServlet.java:852)
…gframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:882)
 org.springframework.web.servlet.FrameworkServlet.doPut (FrameworkServlet.java:800)
                 javax.servlet.http.HttpServlet.service (HttpServlet.java:644)
                 javax.servlet.http.HttpServlet.service (HttpServlet.java:722)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:305)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…ringframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:70)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…ringframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:70)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…s.plugins.httplogger.filters.HttpLoggerFilter.doFilter (HttpLoggerFilter.java:47)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
  org.apache.catalina.core.ApplicationDispatcher.invoke (ApplicationDispatcher.java:684)
…che.catalina.core.ApplicationDispatcher.processRequest (ApplicationDispatcher.java:471)
…g.apache.catalina.core.ApplicationDispatcher.doForward (ApplicationDispatcher.java:402)
 org.apache.catalina.core.ApplicationDispatcher.forward (ApplicationDispatcher.java:329)
…ails.web.util.WebUtils.forwardRequestForUrlMappingInfo (WebUtils.java:314)
…ails.web.util.WebUtils.forwardRequestForUrlMappingInfo (WebUtils.java:279)
…ails.web.util.WebUtils.forwardRequestForUrlMappingInfo (WebUtils.java:270)
….web.mapping.filter.UrlMappingsFilter.doFilterInternal (UrlMappingsFilter.java:221)
…ringframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:76)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…ovy.grails.web.sitemesh.GrailsPageFilter.obtainContent (GrailsPageFilter.java:200)
…s.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter (GrailsPageFilter.java:151)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:330)
….web.access.intercept.FilterSecurityInterceptor.invoke (FilterSecurityInterceptor.java:118)
…eb.access.intercept.FilterSecurityInterceptor.doFilter (FilterSecurityInterceptor.java:84)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…ecurity.web.access.ExceptionTranslationFilter.doFilter (ExceptionTranslationFilter.java:113)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…eb.filter.GrailsAnonymousAuthenticationFilter.doFilter (GrailsAnonymousAuthenticationFilter.java:53)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…ion.rememberme.RememberMeAuthenticationFilter.doFilter (RememberMeAuthenticationFilter.java:139)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…etapi.SecurityContextHolderAwareRequestFilter.doFilter (SecurityContextHolderAwareRequestFilter.java:150)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…cation.AbstractAuthenticationProcessingFilter.doFilter (AbstractAuthenticationProcessingFilter.java:199)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…cation.AbstractAuthenticationProcessingFilter.doFilter (AbstractAuthenticationProcessingFilter.java:199)
…hentication.RequestHolderAuthenticationFilter.doFilter (RequestHolderAuthenticationFilter.java:49)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…web.authentication.logout.MutableLogoutFilter.doFilter (MutableLogoutFilter.java:82)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
….web.context.SecurityContextPersistenceFilter.doFilter (SecurityContextPersistenceFilter.java:87)
…urity.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:342)
…amework.security.web.FilterChainProxy.doFilterInternal (FilterChainProxy.java:192)
…springframework.security.web.FilterChainProxy.doFilter (FilterChainProxy.java:160)
…mework.web.filter.DelegatingFilterProxy.invokeDelegate (DelegatingFilterProxy.java:346)
…ingframework.web.filter.DelegatingFilterProxy.doFilter (DelegatingFilterProxy.java:259)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…eb.servlet.mvc.GrailsWebRequestFilter.doFilterInternal (GrailsWebRequestFilter.java:69)
…ringframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:76)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…s.plugins.httplogger.filters.HttpLoggerFilter.doFilter (HttpLoggerFilter.java:44)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…s.plugins.httplogger.filters.HttpLoggerFilter.doFilter (HttpLoggerFilter.java:44)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
                 com.brandseye.cors.CorsFilter.doFilter (CorsFilter.java:75)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
…rk.web.filter.CharacterEncodingFilter.doFilterInternal (CharacterEncodingFilter.java:88)
…ringframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:76)
…mework.web.filter.DelegatingFilterProxy.invokeDelegate (DelegatingFilterProxy.java:346)
…ingframework.web.filter.DelegatingFilterProxy.doFilter (DelegatingFilterProxy.java:259)
….catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243)
…g.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
   org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:224)
   org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:169)
      org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:168)
     org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:98)
       org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:927)
    org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:118)
    org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:407)
…g.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:987)
…ote.AbstractProtocol$AbstractConnectionHandler.process (AbstractProtocol.java:579)
…apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run (JIoEndpoint.java:307)
      java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1146)
     java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:615)
                                   java.lang.Thread.run (Thread.java:701)

caused by org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.mindinformatics.ann.framework.module.persistence.Annotation#58926]
org.mindinformatics.ann.framework.module.persistence.AnnotatorController.update(AnnotatorController.groovy:168)
…s.plugins.httplogger.filters.HttpLoggerFilter.doFilter (HttpLoggerFilter.java:47)
…eb.filter.GrailsAnonymousAuthenticationFilter.doFilter (GrailsAnonymousAuthenticationFilter.java:53)
…hentication.RequestHolderAuthenticationFilter.doFilter (RequestHolderAuthenticationFilter.java:49)
…web.authentication.logout.MutableLogoutFilter.doFilter (MutableLogoutFilter.java:82)
…s.plugins.httplogger.filters.HttpLoggerFilter.doFilter (HttpLoggerFilter.java:44)
…s.plugins.httplogger.filters.HttpLoggerFilter.doFilter (HttpLoggerFilter.java:44)
                 com.brandseye.cors.CorsFilter.doFilter (CorsFilter.java:75)
      java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1146)
     java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:615)
                                   java.lang.Thread.run (Thread.java:701)

There are no depots available

Including the property openboxes.loginLocation.requiredActivities in openboxes-config.properties causes system to display the error message "There are no depots available". Not sure why this occurs, but I will look into it.

In the meantime, the workaround is to uncomment this property from the openboxes-config.properties file so that the system uses the default value.

Allow user to add multiple pallets and boxes at once

Martine Fleurius ([email protected]) wrote:

Do we have an Openboxes feature that allows you to add multiple boxes at once to a pallet/shipment? Right now, I add each pallet, and boxes one by one. For big shipments, like one I have right now with 113 boxes in 2 pallets, it would save me a lot of time to add the boxes at once to the pallets.

IllegalArgumentException: Comparison method violates its general contract!

Occurs when accessing the Receive Order page on the demo server. Oddly enough, this does not happen on my development machine.

http://demo.openboxes.com/openboxes/receiveOrderWorkflow/receiveOrder/c1e344344a4e1874014abf6aef78005d?execution=e3s1

Stacktrace

Caused by: java.lang.IllegalArgumentException: Comparison method violates its general contract!
    at java.util.TimSort.mergeLo(TimSort.java:747)
    at java.util.TimSort.mergeAt(TimSort.java:483)
    at java.util.TimSort.mergeCollapse(TimSort.java:410)
    at java.util.TimSort.sort(TimSort.java:214)
    at java.util.TimSort.sort(TimSort.java:173)
    at java.util.Arrays.sort(Arrays.java:659)
    at java.util.Collections.sort(Collections.java:217)
    at var_lib_tomcat7_webapps_openboxes_WEB_INF_grails_app_views_receiveOrderWorkflow_receiveOrder_enterShipmentDetails_gsp$_run_closure2_closure5.doCall(var_lib_tomcat7_webapps_openboxes_WEB_INF_grails_app_views_receiveOrderWorkflow_receiveOrder_enterShipmentDetails_gsp:76)
    at var_lib_tomcat7_webapps_openboxes_WEB_INF_grails_app_views_receiveOrderWorkflow_receiveOrder_enterShipmentDetails_gsp$_run_closure2_closure5.doCall(var_lib_tomcat7_webapps_openboxes_WEB_INF_grails_app_views_receiveOrderWorkflow_receiveOrder_enterShipmentDetails_gsp)
    ... 8 more

Java version

$ java -version
java version "1.7.0_51"
OpenJDK Runtime Environment (IcedTea 2.4.4) (7u51-2.4.4-0ubuntu0.13.04.2)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)

Product Attributes show in the wrong field

I've created three product attributes, Price, Donation, Location, in that order. Price has the "Allow Other" box checked. I edit a product, and select "No" for donation and save it. When I edit the product again, the price field contains the text "No".

This happens in OpenBoxes Version: 0.5.0.3.

Exporting products has quotation marks surrounding the filename

Exporting the products creates the following filename:
'Products-20131220-014955.csv'

Platform: OSX version: OS X 10.8.4 (12E3067)
Openboxes: Application Version: 0.6.0.5 | Build Number: v0.5.6-349-g7d67720 | Environment: development | Build Date: 21 Dec 2013 10:17:50 AM Grails Version: 1.3.7 | Locale: English French Spanish | Debug Mode: off | IP Address: 0:0:0:0:0:0:0:1%0 | Data load: 1.132s | Page load: 5.352s

Purchase Order > StringEscapeUtils.escapeCsv() is applicable for argument types: (org.codehaus.groovy.grails.web.util.StreamCharBuffer)

Stacktrace:

groovy.lang.MissingMethodException: No signature of method: static org.apache.commons.lang.StringEscapeUtils.escapeCsv() is applicable for argument types: (org.codehaus.groovy.grails.web.util.StreamCharBuffer) values: [10]
Possible solutions: escapeCsv(java.lang.String), escapeCsv(java.io.Writer, java.lang.String), unescapeCsv(java.lang.String), escapeJava(java.lang.String), escapeSql(java.lang.String), escapeXml(java.lang.String)
        at org.pih.warehouse.order.OrderController$_closure22_closure28.doCall(OrderController.groovy:448)
        at org.pih.warehouse.order.OrderController$_closure22.doCall(OrderController.groovy:441)
        at org.pih.warehouse.order.OrderController$_closure22.doCall(OrderController.groovy)
        at grails.plugin.springcache.web.GrailsFragmentCachingFilter.doFilter(GrailsFragmentCachingFilter.groovy:66)
        at net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:86)
        at org.grails.plugin.resource.DevModeSanityFilter.doFilter(DevModeSanityFilter.groovy:44)
        at java.lang.Thread.run(Thread.java:745)

Transfer in and inventory adjustments don't include time and Inventory adjustments are not correct

The time for inventory adjustments and transfer in's uses a time of 12:00 AM rather than the actual time. This makes the 'Stock History' list potentially out of order.

Additionally, possibly related, the total amount in inventory is invalid. Do the following to reproduce...
1.) Select and inventory item.
2.) Create an incoming shipment and receive it into inventory. In our example, there was no preexisting inventory.
3.) Then create a stock requisition for 700 of the item you received into inventory. Leave the date as today's date. Pick 700 of the 7000 that entered previously.
4.) Go to the inventory for the item, and you will see 6300 in inventory.
5.) Go to adjust stock. Enter 6200 and click "Adjust stock".
6.) View the quantity of items on hand, and you will notice there are now 5500 of that item in stock rather than the 6200 you just said it had in stock.

This happens with...
Application Version: 0.5.5 | Build Number: v0.5.4-16-g13a848b

Error executing script Upgrade: loader constraint violation in interface itable initialization

The following error occurred while attempting to run the application from the command-line (same error on running any command eg run-app, compile).

Environment:

OS Fedora x86_64
Java : 1.6 x86_64 openjdk
Grails 1.3.7
Openboxes : master branch

Stacktrace:

[siddharth@sipher openboxes]$ ../grails-1.3.7/bin/grails upgrade
Welcome to Grails 1.3.7 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: /home/siddharth/Workspace/Temp/SiteMan/grails-1.3.7

Base Directory: /home/siddharth/Workspace/Temp/openboxes/openboxes
Resolving dependencies...
Dependencies resolved in 2687ms.
Running script /home/siddharth/Workspace/Temp/openboxes/grails-1.3.7/scripts/Upgrade.groovy
Environment set to development
Downloading: /home/siddharth/.m2/repository/log4j/log4j/1.2.15/log4j-1.2.15.pom ...
Download complete.
Downloading: /home/siddharth/.m2/repository/log4j/log4j/1.2.15/log4j-1.2.15.pom.sha1 ...
Download complete.
Error executing script Upgrade: loader constraint violation in interface itable initialization: when resolving method "org.apache.xerces.dom.NodeImpl.getChildNodes()Lorg/w3c/dom/NodeList;" the class loader (instance of org/codehaus/groovy/grails/cli/support/GrailsRootLoader) of the current class, org/apache/xerces/dom/NodeImpl, and the class loader (instance of <bootloader>) for interface org/w3c/dom/Node have different Class objects for the type org/w3c/dom/NodeList used in the signature java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "org.apache.xerces.dom.NodeImpl.getChildNodes()Lorg/w3c/dom/NodeList;" the class loader (instance of org/codehaus/groovy/grails/cli/support/GrailsRootLoader) of the current class, org/apache/xerces/dom/NodeImpl, and the class loader (instance of <bootloader>) for interface org/w3c/dom/Node havedifferent Class objects for the type org/w3c/dom/NodeList used in the signature

Using other SQL databases

Does openbox use any MySQL-specific features?

I'm curious about the possibility of alternatives like MariaDB or PostgreSQL.

Prevent Quartz jobs from running during Liquibase migrations

When I startup a fresh install of openboxes with mysql, I see the following stack trace.

2014-10-23 18:58:11,167 [main] INFO  liquibase  - Changeset 0.5.x/add-location_role.xml::1355247924098-3::Thoughtworks (generated)::(MD5Sum: d73fd151db672ad79ad45cbf9a77d69)
2014-10-23 18:58:11,185 [main] INFO  liquibase  - Changeset 0.5.x/add-location_role.xml::1355247924098-4::Thoughtworks (generated)::(MD5Sum: c26c78db85d870f6f7e573fe53c531d2)
2014-10-23 18:58:11,205 [main] INFO  liquibase  - Changeset 0.5.x/add-product-fields.xml::1358133447150-1::jmiranda (generated)::(MD5Sum: 33beb26ecbb06277e59180e83881151d)
2014-10-23 18:58:12,253 [DefaultPluginScheduler_Worker-1] WARN  util.JDBCExceptionReporter  - SQL Error: 1054, SQLState: 42S22
2014-10-23 18:58:12,257 [DefaultPluginScheduler_Worker-1] ERROR util.JDBCExceptionReporter  - Unknown column 'product0_.active' in 'field list'
2014-10-23 18:58:12,354 [DefaultPluginScheduler_Worker-1] ERROR quartz2.JobErrorLoggerListener  - Exception thrown in job:org.pih.warehouse.jobs.AssignIdentifierJob
org.quartz.JobExecutionException: org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; SQL [select product0_.id as id19_, product0_.version as version19_, product0_.active as active19_, product0_.brand_name as brand4_19_, product0_.category_id as category5_19_, product0_.cold_chain as cold6_19_, product0_.controlled_substance as controlled7_19_, product0_.created_by_id as created8_19_, product0_.date_created as date9_19_, product0_.default_uom_id as default10_19_, product0_.description as descrip11_19_, product0_.essential as essential19_, product0_.hazardous_material as hazardous13_19_, product0_.last_updated as last14_19_, product0_.lot_control as lot15_19_, product0_.manufacturer as manufac16_19_, product0_.manufacturer_code as manufac17_19_, product0_.manufacturer_name as manufac18_19_, product0_.model_number as model19_19_, product0_.name as name19_, product0_.ndc as ndc19_, product0_.package_size as package22_19_, product0_.price_per_unit as price23_19_, product0_.product_code as product24_19_, product0_.reconditioned as recondi25_19_, product0_.serialized as serialized19_, product0_.unit_of_measure as unit27_19_, product0_.upc as upc19_, product0_.updated_by_id as updated29_19_, product0_.vendor as vendor19_, product0_.vendor_code as vendor31_19_, product0_.vendor_name as vendor32_19_ from product product0_ where product0_.product_code is null or product0_.product_code='']; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query [See nested exception: org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; SQL [select product0_.id as id19_, product0_.version as version19_, product0_.active as active19_, product0_.brand_name as brand4_19_, product0_.category_id as category5_19_, product0_.cold_chain as cold6_19_, product0_.controlled_substance as controlled7_19_, product0_.created_by_id as created8_19_, product0_.date_created as date9_19_, product0_.default_uom_id as default10_19_, product0_.description as descrip11_19_, product0_.essential as essential19_, product0_.hazardous_material as hazardous13_19_, product0_.last_updated as last14_19_, product0_.lot_control as lot15_19_, product0_.manufacturer as manufac16_19_, product0_.manufacturer_code as manufac17_19_, product0_.manufacturer_name as manufac18_19_, product0_.model_number as model19_19_, product0_.name as name19_, product0_.ndc as ndc19_, product0_.package_size as package22_19_, product0_.price_per_unit as price23_19_, product0_.product_code as product24_19_, product0_.reconditioned as recondi25_19_, product0_.serialized as serialized19_, product0_.unit_of_measure as unit27_19_, product0_.upc as upc19_, product0_.updated_by_id as updated29_19_, product0_.vendor as vendor19_, product0_.vendor_code as vendor31_19_, product0_.vendor_name as vendor32_19_ from product product0_ where product0_.product_code is null or product0_.product_code='']; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query]
    at grails.plugin.quartz2.GrailsArtefactJob.execute(GrailsArtefactJob.java:66)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
Caused by: org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; SQL [select product0_.id as id19_, product0_.version as version19_, product0_.active as active19_, product0_.brand_name as brand4_19_, product0_.category_id as category5_19_, product0_.cold_chain as cold6_19_, product0_.controlled_substance as controlled7_19_, product0_.created_by_id as created8_19_, product0_.date_created as date9_19_, product0_.default_uom_id as default10_19_, product0_.description as descrip11_19_, product0_.essential as essential19_, product0_.hazardous_material as hazardous13_19_, product0_.last_updated as last14_19_, product0_.lot_control as lot15_19_, product0_.manufacturer as manufac16_19_, product0_.manufacturer_code as manufac17_19_, product0_.manufacturer_name as manufac18_19_, product0_.model_number as model19_19_, product0_.name as name19_, product0_.ndc as ndc19_, product0_.package_size as package22_19_, product0_.price_per_unit as price23_19_, product0_.product_code as product24_19_, product0_.reconditioned as recondi25_19_, product0_.serialized as serialized19_, product0_.unit_of_measure as unit27_19_, product0_.upc as upc19_, product0_.updated_by_id as updated29_19_, product0_.vendor as vendor19_, product0_.vendor_code as vendor31_19_, product0_.vendor_name as vendor32_19_ from product product0_ where product0_.product_code is null or product0_.product_code='']; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
    at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:629)
    at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)
    at org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:343)
    at org.codehaus.groovy.grails.orm.hibernate.metaclass.FindAllPersistentMethod.doInvokeInternal(FindAllPersistentMethod.java:122)
    at org.codehaus.groovy.grails.orm.hibernate.metaclass.AbstractStaticPersistentMethod.invoke(AbstractStaticPersistentMethod.java:64)
    at org.codehaus.groovy.grails.orm.hibernate.metaclass.AbstractStaticPersistentMethod.invoke(AbstractStaticPersistentMethod.java:57)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSite.invoke(PojoMetaMethodSite.java:188)
    at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:132)
    at org.codehaus.groovy.grails.plugins.orm.hibernate.HibernatePluginSupport$_enhanceSessionFactory_closure11.doCall(HibernatePluginSupport.groovy:371)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1058)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1070)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
    at groovy.lang.Closure.call(Closure.java:282)
    at org.codehaus.groovy.runtime.metaclass.ClosureStaticMetaMethod.invoke(ClosureStaticMetaMethod.java:59)
    at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite$StaticMetaMethodSiteNoUnwrapNoCoerce.invoke(StaticMetaMethodSite.java:148)
    at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.call(StaticMetaMethodSite.java:88)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
    at org.pih.warehouse.core.IdentifierService.assignProductIdentifiers(IdentifierService.groovy:138)
    at org.pih.warehouse.core.IdentifierService$$FastClassByCGLIB$$5c191f1.invoke(<generated>)
    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
    at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621)
    at org.pih.warehouse.core.IdentifierService$$EnhancerByCGLIB$$ec753bd.assignProductIdentifiers(<generated>)
    at org.pih.warehouse.core.IdentifierService$assignProductIdentifiers.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
    at org.pih.warehouse.jobs.AssignIdentifierJob.execute(AssignIdentifierJob.groovy:15)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at grails.plugin.quartz2.GrailsArtefactJob.execute(GrailsArtefactJob.java:59)
    ... 2 more
Caused by: org.hibernate.exception.SQLGrammarException: could not execute query
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
    at org.hibernate.loader.Loader.doList(Loader.java:2231)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
    at org.hibernate.loader.Loader.list(Loader.java:2120)
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
    at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:361)
    at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1148)
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
    at org.codehaus.groovy.grails.orm.hibernate.metaclass.FindAllPersistentMethod$1.doInHibernate(FindAllPersistentMethod.java:186)
    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406)
    ... 51 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.active' in 'field list'
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.Util.getInstance(Util.java:386)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4190)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4122)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2818)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2157)
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2324)
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
    at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
    at org.hibernate.loader.Loader.getResultSet(Loader.java:1808)
    at org.hibernate.loader.Loader.doQuery(Loader.java:697)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
    at org.hibernate.loader.Loader.doList(Loader.java:2228)
    ... 60 more
2014-10-23 18:58:12,650 [main] INFO  liquibase  - Changeset 0.5.x/add-product-fields.xml::1358133447150-2::jmiranda (generated)::(MD5Sum: f8e177c378a88dd5149b793b1c75b0cd)
2014-10-23 18:58:14,118 [main] INFO  liquibase  - Changeset 0.5.x/add-product-fields.xml::1358133447150-3::jmiranda (generated)::(MD5Sum: 16d53e24311682f3cb74ddaaf31284a9)
2014-10-23 18:58:15,531 [main] INFO  liquibase  - Changeset 0.5.x/add-product-fields.xml::1358133447150-4::jmiranda (generated)::(MD5Sum: bb358abdda5cc8feb715d7376cb022c4)
2014-10-23 18:58:16,923 [main] INFO  liquibase  - Changeset 0.5.x/add-product-fields.xml::1358133447150-5::jmiranda (generated)::(MD5Sum: 49f872d5d8b0bbe6fd8ec12f19e95)
2014-10-23 18:58:18,355 [main] INFO  liquibase  - Changeset 0.5.x/add-product-fields.xml::1358133447150-6::jmiranda (generated)::(MD5Sum: 675274e5a1b5ed2d219f3d28578b15)
2014-10-23 18:58:19,771 [main] INFO  liquibase  - Changeset 0.5.x/add-product-fields.xml::1358133447150-7::jmiranda (generated)::(MD5Sum: 6ecb28d5b63a5496d5f17b733b1cbf94)
2014-10-23 18:58:21,195 [main] INFO  liquibase  - Changeset 0.5.x/add-inventory-level-max-quantity.xml::1358886163959-1::jmiranda (generated)::(MD5Sum: 3b4ecc54b35f34fc39c6cd3274b16c52)
2014-10-23 18:58:22,515 [main] INFO  liquibase  - Changeset 0.5.x/add-inventory-level-bin-location.xml::1358886163959-2::jmiranda (generated)::(MD5Sum: 148c02443c34158293994497e59a61c)
2014-10-23 18:58:23,933 [main] INFO  liquibase  - Changeset 0.5.x/add-transaction-number.xml::1359144266832-1::jmiranda (generated)::(MD5Sum: 23459577e8bf5ef5866dc7cff3ae6c6)

Need Report - Low Stock

There needs to be a way to get a report of items that your depot is low in stock on. This would be similar to the Expired/Expiring stock.

Improve management of child containers within a shipment

Email from Kelsey Nagel

I also noticed when I was creating the shipment that you cannot delete boxes or move boxes once they are created (I reported those bugs through openboxes). In addition, when you try to move an entire pallet in the edit section, the boxes in the pallet don’t come with it. I tried to move pallet two from the end of the shipment to the middle, and the pallet itself moved, but the boxes stayed at the end where they were. I ended up renaming the items to get them in the right order.

Error sending email message to null recipient

There's a bug in the signup process that allows a user to create an account without an email. We can fix this bug by filtering out "null" emails from recipients list. However, this should also be fixed by requiring an email for all person/user records (see #44).

Stacktrace:

Error sending HTML email message with subject New product 'Ultrasound machine, Portable' has been created by Laura Gould to [[email protected], null]
java.lang.NullPointerException
        at javax.mail.internet.InternetAddress.parse(InternetAddress.java:609)
        at javax.mail.internet.InternetAddress.parse(InternetAddress.java:569)
        at javax.mail.internet.InternetAddress.<init>(InternetAddress.java:105)
        at org.apache.commons.mail.Email.createInternetAddress(Email.java:578)
        at org.apache.commons.mail.Email.addTo(Email.java:727)
        at org.apache.commons.mail.Email.addTo(Email.java:710)
        at org.apache.commons.mail.Email.addTo(Email.java:689)
        at org.apache.commons.mail.Email$addTo.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)
        at org.apache.commons.mail.Email$addTo.call(Unknown Source)
        at org.pih.warehouse.core.MailService$_sendHtmlMail_closure3.doCall(MailService.groovy:180)
        at sun.reflect.GeneratedMethodAccessor6280.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1058)
        at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1070)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
        at groovy.lang.Closure.call(Closure.java:282)
        at groovy.lang.Closure.call(Closure.java:295)
        at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:1220)
        at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:1196)
        at org.codehaus.groovy.runtime.dgm$110.invoke(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:270)
        at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
        at org.pih.warehouse.core.MailService.sendHtmlMail(MailService.groovy:179)
        at org.pih.warehouse.core.MailService$sendHtmlMail.callCurrent(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
        at org.pih.warehouse.core.MailService.sendHtmlMail(MailService.groovy:160)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrap.invoke(PogoMetaMethodSite.java:246)
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:63)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:132)
        at org.pih.warehouse.product.ProductController.sendProductCreatedEmail(ProductController.groovy:561)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1058)
        at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1070)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1003)
        at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1070)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
        at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:149)
        at org.pih.warehouse.product.ProductController$_closure8.doCall(ProductController.groovy:268)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:225)
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:51)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:149)
        at org.pih.warehouse.product.ProductController$_closure8.doCall(ProductController.groovy)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1058)
        at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1070)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
        at groovy.lang.Closure.call(Closure.java:282)
        at groovy.lang.Closure.call(Closure.java:277)
        at org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsControllerHelper.handleAction(SimpleGrailsControllerHelper.java:368)
        at org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsControllerHelper.executeAction(SimpleGrailsControllerHelper.java:232)
        at org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsControllerHelper.handleURI(SimpleGrailsControllerHelper.java:190)
        at org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsControllerHelper.handleURI(SimpleGrailsControllerHelper.java:129)
        at org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsController.handleRequest(SimpleGrailsController.java:73)
        at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
        at org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet.doDispatch(GrailsDispatcherServlet.java:292)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at javax.servlet.FilterChain$doFilter.call(Unknown Source)
        at grails.plugin.springcache.web.GrailsFragmentCachingFilter.doFilter(GrailsFragmentCachingFilter.groovy:66)
        at net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:86)
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
        at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
        at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(WebUtils.java:298)
        at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(WebUtils.java:264)
        at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(WebUtils.java:255)
        at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInternal(UrlMappingsFilter.java:183)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.obtainContent(GrailsPageFilter.java:245)
        at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFilter.java:134)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:65)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at com.opensymphony.clickstream.ClickstreamFilter.doFilter(ClickstreamFilter.java:56)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:776)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:705)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:898)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Thread.java:662)

Cannot run program "git": CreateProcess error=2, The system cannot find the file specified

During build process, we use git to get the latest revision tag. Apparently, we need better error handling when git is not available.

grails.mail.enabled: 'false'
2015-03-12 18:45:58,335 [main] INFO cfg.Environment - Hibernate 3.3.1.GA
2015-03-12 18:45:58,350 [main] INFO cfg.Environment - hibernate.properties not found
2015-03-12 18:45:58,355 [main] INFO cfg.Environment - Bytecode provider name : javassist
2015-03-12 18:45:58,370 [main] INFO cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
[copy] Copying 1 file to C:\Users\Hemanth kumar.P\.grails\1.3.7\projects\openboxes-master
2015-03-12 18:46:09,857 [main] INFO warehouse._Events - Setting build date, build number, and revision number ...
2015-03-12 18:46:09,869 [main] ERROR warehouse._Events - Error executing git describe 
java.io.IOException: Cannot run program "git": CreateProcess error=2, The system cannot find the file specified

Boxes (sub-containers) cannot be deleted once created

Stacktrace:

Exception occured invoking flow action: deleted object would be re-saved by cascade (remove deleted object from associations): [org.pih.warehouse.shipping.Container#c87937524c4a6871014c4c4c315d000d]; nested exception is org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations): [org.pih.warehouse.shipping.Container#c87937524c4a6871014c4c4c315d000d]
org.springframework.dao.InvalidDataAccessApiUsageException: deleted object would be re-saved by cascade (remove deleted object from associations): [org.pih.warehouse.shipping.Container#c87937524c4a6871014c4c4c315d000d]; nested exception is org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations): [org.pih.warehouse.shipping.Container#c87937524c4a6871014c4c4c315d000d]
        at org.pih.warehouse.shipping.ShipmentService$$EnhancerByCGLIB$$5fd78b1a.deleteContainer(<generated>)
        at org.pih.warehouse.shipping.ShipmentService$deleteContainer.call(Unknown Source)
        at org.pih.warehouse.shipping.CreateShipmentWorkflowController$_closure2_closure11_closure41.doCall(CreateShipmentWorkflowController.groovy:224)
        at grails.plugin.springcache.web.GrailsFragmentCachingFilter.doFilter(GrailsFragmentCachingFilter.groovy:66)
        at net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:86)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:776)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:705)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:898)
        at java.lang.Thread.run(Thread.java:662)
Caused by: org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations): [org.pih.warehouse.shipping.Container#c87937524c4a6871014c4c4c315d000d]
        ... 11 more

Clickstream:

Clickstream for 209.156.249.193

Initial Referrer: http://staging.pih-emr.org/openboxes/js/jquery.ui/css/smoothness/jquery-ui.css
Hostname: 209.156.249.193
Session ID: CE74D829AC80012D63DB3177D7B1A82E
Bot: No
Stream Start: 24/Mar/2015 04:42:08 PM UTC
Last Request: 24/Mar/2015 04:48:11 PM UTC
Session Length: 6 minutes 3 seconds
# of Requests: 34
Click stream:

staging.pih-emr.org/openboxes/js/jquery.ui/css/smoothness/images/ui-icons_454545_256x240.png
staging.pih-emr.org/openboxes/createShipmentWorkflow/createShipment?containerToEditId=c87937524c4a6871014c4c4c315d000d&execution=e1s29&_eventId=editContainer
staging.pih-emr.org/openboxes/auth/login
staging.pih-emr.org/openboxes/plugins/yui-2.8.2.1/js/yui/reset-fonts-grids/reset-fonts-grids.css
staging.pih-emr.org/openboxes/plugins/jquery-ui-1.8.7/jquery-ui/themes/ui-lightness/jquery-ui-1.8.7.custom.css
staging.pih-emr.org/openboxes/plugins/jquery-validation-ui-1.4.7/js/qTip/jquery.qtip.pack.js
staging.pih-emr.org/openboxes/plugins/jquery-validation-ui-1.4.7/js/jquery-validation-ui/grails-validation-methods.js
staging.pih-emr.org/openboxes/plugins/jquery-ui-1.8.7/jquery-ui/js/jquery-ui-1.8.7.custom.min.js
staging.pih-emr.org/openboxes/plugins/jquery-validation-ui-1.4.7/css/qTip/jquery.qtip.css
staging.pih-emr.org/openboxes/plugins/jquery-validation-1.9/js/jquery-validation/jquery.validate.min.js
staging.pih-emr.org/openboxes/plugins/jquery-1.7.2/js/jquery/jquery-1.7.2.min.js
staging.pih-emr.org/openboxes/auth/handleLogin
staging.pih-emr.org/openboxes/dashboard/index
staging.pih-emr.org/openboxes/dashboard/chooseLocation
staging.pih-emr.org/openboxes/dashboard/chooseLocation/3
staging.pih-emr.org/openboxes/createShipmentWorkflow/createShipment?containerToEditId=c87937524c4a6871014c4c4c315d000d&execution=e1s29&_eventId=editContainer
staging.pih-emr.org/openboxes/createShipmentWorkflow/createShipment?containerToEditId=c87937524c4a6871014c4c4c315d000d&_eventId=editContainer
staging.pih-emr.org/openboxes/createShipmentWorkflow/createShipment?execution=e1s1&containerToEditId=c87937524c4a6871014c4c4c315d000d
staging.pih-emr.org/openboxes/shipment/list?type=incoming&execution=e1s1
staging.pih-emr.org/openboxes/shipment/list?type=incoming&status=PENDING&execution=e1s1
staging.pih-emr.org/openboxes/images/icons/shipmentType/ShipmentTypeLand.png
staging.pih-emr.org/openboxes/images/icons/shipmentType/ShipmentTypeAir.png
staging.pih-emr.org/openboxes/shipment/showDetails/c87937524c4a6871014c4c4a50590001
staging.pih-emr.org/openboxes/images/icons/silk/page.png
staging.pih-emr.org/openboxes/images/icons/silk/date.png
staging.pih-emr.org/openboxes/doc4j/downloadPackingList/c87937524c4a6871014c4c4a50590001
staging.pih-emr.org/openboxes/createShipmentWorkflow/createShipment/c87937524c4a6871014c4c4a50590001
staging.pih-emr.org/openboxes/createShipmentWorkflow/createShipment/c87937524c4a6871014c4c4a50590001?execution=e2s1
staging.pih-emr.org/openboxes/createShipmentWorkflow/createShipment?execution=e2s1&_eventId=enterContainerDetails
staging.pih-emr.org/openboxes/createShipmentWorkflow/createShipment?execution=e2s2
staging.pih-emr.org/openboxes/createShipmentWorkflow/createShipment?container.id=c87937524c4a6871014c4c4c315d000d&execution=e2s2&_eventId=deleteContainer
staging.pih-emr.org/openboxes/createShipmentWorkflow/createShipment?execution=e2s2
staging.pih-emr.org/openboxes/createShipmentWorkflow/createShipment?container.id=c87937524c4a6871014c4c4c315d000d&execution=e2s2&_eventId=deleteContainer
staging.pih-emr.org/openboxes/createShipmentWorkflow/createShipment?execution=e2s2

Inventary control not count the units correctly

The inventory control has bugs, it not counts units correctly.

Steps to reproduce the bug:
1.- Add a product.
2.- Record stock (Ex: 1000 units)
3.- Mark as consumed (Ex: 200 units)
4.- See stock history label

I tested it in local compile from git (20140707) and http://demo.openboxes.com

Screenshot of process, see the last screenshot:

2014-07-28 08_20_35-omni
2014-07-28 08_21_01-record inventory
2014-07-28 08_21_22-omni
2014-07-28 08_21_44-consumption
2014-07-28 08_22_53-omni

Dashboard | Indicator spinner spins indefinitely - caused by exception "Cannot invoke method sort() on null object"

2013-10-15 21:11:31,932 ERROR  GrailsExceptionResolver - Exception occurred when processing request: [GET] /openboxes/json/getDashboardAlerts
Stacktrace follows:
java.lang.NullPointerException: Cannot invoke method sort() on null object
        at org.pih.warehouse.inventory.InventoryService.getQuantityByProductAndInventoryItemMap(InventoryService.groovy:1087)
        at org.pih.warehouse.inventory.InventoryService$getQuantityByProductAndInventoryItemMap.callCurrent(Unknown Source)
        at org.pih.warehouse.inventory.InventoryService.getQuantityByProductMap(InventoryService.groovy:1161)
        at org.pih.warehouse.inventory.InventoryService$getQuantityByProductMap.callCurrent(Unknown Source)
        at org.pih.warehouse.inventory.InventoryService.getDashboardAlerts(InventoryService.groovy:705)
        at org.pih.warehouse.inventory.InventoryService$$FastClassByCGLIB$$a7f866ff.invoke(<generated>)
        at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
        at org.pih.warehouse.inventory.InventoryService$$EnhancerByCGLIB$$f5314030.getDashboardAlerts(<generated>)
        at org.pih.warehouse.inventory.InventoryService$getDashboardAlerts.call(Unknown Source)
        at org.pih.warehouse.JsonController$_closure10.doCall(JsonController.groovy:226)
        at org.pih.warehouse.JsonController$_closure10.doCall(JsonController.groovy)

        at grails.plugin.springcache.web.GrailsFragmentCachingFilter.buildPage(GrailsFragmentCachingFilter.groovy:152)
        at grails.plugin.springcache.web.GrailsFragmentCachingFilter.buildPageInfo(GrailsFragmentCachingFilter.groovy:93)
        at grails.plugin.springcache.web.GrailsFragmentCachingFilter.doFilter(GrailsFragmentCachingFilter.groovy:62)
        at net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:86)
        at java.lang.Thread.run(Thread.java:744)

Purchasing Agent Setup

How do we setup the system so we have a purchasing agent in the US that purchases based on the Purchase Orders, and then sends them to the depot that ordered them? I've tried creating a purchasing agent location. I've then tried creating a purchase order at the main depot, with the "order from" set to the purchasing agent's location. When I open the purchasing agent's location, and search under orders I don't see any. What am I doing wrong?

The purchasing agent needs to see what they need to order, and then schedule the orders into a shipment to come to the main depot.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.