Project Name

Streamlined Apparel Management with Customized Odoo Solutions

Odoo, XML, CSS, Python and JS


Our client was dealing in buying yarn and high-quality t-shirts and hoodies. They collaborate with subcontractors for production. The client uses two ways to sell their products, which include Retail and Wholesale. The client wanted to streamline the retail and wholesale management process.



  • The client faced an issue with the reservation system, which includes both packaged and loose product units. It generally causes reservations to be unbalanced, which makes it difficult to manage accurate stock management due to quants.
  • Users create sale order lines after confirming sales orders, which cause multiple stock moves for the same product. This makes it difficult for a client to check the functionality of stock moves.
  • When customers request products in dozens but return partial quantities in units (odoo default feature to create picking in units), users can create a credit note. However, due to Odoo's default feature of rounding of quantities, it shows some differences in the final amount.
  • After following some operations in the picking process, the demand quantity is getting reset to zero.
  • Although Odoo enables users to return quantities in units, the client wanted the ability to return entire packages.
  • The validation of picks is time-consuming and results in the termination of the process thread.
  • The client wanted to facilitate the delivery of sales orders across multiple warehouses.
  • The retail instance of Shopify lacks the functionality to create invoices.
  • They had the option to validate pickings without reservation, resulting in the creation of negative quants.
  • When users tried to validate return pickings, it consumed a lot of time during validation.
  • The client required a solution to address the delivery order process and expedite the delivery return process. They needed an internal transfer through barcode scanning.

Our Solution

  • Our developers provided two solutions to resolve the reservation system issue:
    • During the reservation process for the desired packages, we removed all stock move lines except one. If a line had some reserved quantity, we set the reserved quantity to '0'. Similarly, if the line contained the source package or destination package, we eliminated these packages from the line and saved it in the partially assigned state. In this way, an update of the reservation quantity in the stock move line can call the reservation.
    • We redefined the functionality by leveraging the default features in Odoo for reserving the quantity for the stock move.
  • We merged the sale order lines. If there were multiple lines, then the quantity would be updated to the sum of the sale order lines that had the same combination of product, tax, discount, and unit price.
  • Added a character field in the sale order line that has the ability to store the non-rounding value of the quantity. By utilizing this non-rounding value, we updated the price unit in the account move line.
  • Certain operations were executed in the "done picking" stage, which resulted in the demand quantity of the move being reduced to zero. To maintain data integrity, users were restricted from making any changes after the picking was completed.
  • In the return picking lines, a boolean field was added. If it is set to true, then the creation of the return picking removes all the stock move lines and reserved packages from the delivery order. Otherwise, users were able to use the default Odoo functionality.
  • The slowness issue was linked to the user's, as they are unable to create the necessary pickings that result in delays in the validation process. In some cases, we found that they did not enter the done quantity and demand quantity, even though they could skip the reservation step. As a result, Odoo generated extra moves to balance the existing ones as well as call reservations and validate pickings.
  • We implemented a delivery strategy that was added to the sale order lines. This strategy facilitated the creation of multiple pickings based on the selected warehouse in the delivery strategy. After the multiple pickings were generated, users expressed a need to change the warehouse. To accommodate this, we offered two solutions that enabled the modification of the pickings individually.
    • Change Source: In this solution, users were able to change the source by selecting the desired warehouse in the wizard. During the process, the existing picking was canceled, and a new picking was created with the source location of the warehouse selected in the wizard.
    • Split Shipment: For the split shipment, we provided a feature that allowed users to add a split warehouse and split quantity within the one2many field in the stock moves. After the split quantity was added, the system automatically generated moves reflecting the split quantities. Moreover, the split quantity was deducted from the original demand quantity in the existing move. This enabled the creation of multiple pickings, each associated with the designated split warehouse.
  • We implemented the Shopify transaction API to synchronize transactions with our Odoo instance. By populating the relevant transaction values, specifically those marked as 'capture' and with 'success' status, we efficiently updated the corresponding fields within the sale order. Consequently, we were able to automatically generate invoices based on this synchronized data and seamlessly create payments, leveraging the comprehensive transaction information for each transaction.
  • During the picking validation, we implemented a check on the quants of all stock-moving products. If any loose quant was identified with a negative quantity, then the inventory adjustment will automatically be set to the quantity “0”.
  • To improve the return picking process, we introduced a new boolean field within the operation types. With this field, we enabled the system to stop the reservation of existing outgoing moves and streamline the overall return handling procedure.
  • We removed unnecessary loggers from the picking validate method, added a one2many field with delivery orders, and provided users with picking status updates for efficient validation. Our thorough assessment of cron jobs and automated actions led to the resolution of bottlenecks responsible for slowing down the picking validation process and optimized worker usage.
  • Enabled users to effortlessly scan barcodes of both source and destination locations or packages, facilitating their seamless addition or removal within internal transfers. Additionally, we incorporated a barcode scanning feature for streamlined process management.
  • We utilized the default Anglo-Saxon accounting in Odoo account setup.
  • We designed a flow for managing various input stock accounts, specifically for managing yarn reports for intermediary fabrics and finished goods.
  • We customized the accounting setup to meet industry-specific depreciation and expense standards.

Data Flow Diagram



After extensively testing both solutions, our key issue of unbalanced reservations has been finally resolved. Despite initial challenges in merging sales order lines and creating multiple moves for the same product, the latest implementation has effectively addressed these concerns, ensured precise calculations and eliminated recurring issues for users. Now, users can easily receive packages from customers, while adjusting certain settings has significantly expedited the validation of pickings, facilitating the smooth delivery of orders across multiple warehouses. Notably, our retail operations have witnessed an improvement, with streamlined invoice and payment generation, effective management of negative stock instances, and enhanced efficiency in the return picking process. Overall, these comprehensive changes have alleviated system slowness, enhanced the overall operational agility and system performance.

Streamline Your Business Operations
With Our Customized Odoo Solutions!