Categories
Uncategorized

Open-Source Dolibarr Modules for Customer Product Lifecycle Management

I’ve taken full advantage of having Anthropic’s Claude Code tool. With it, I built a suite of three interconnected Dolibarr modules that give small manufacturers and distributors a complete view of the customer product lifecycle โ€” from delivery to return to warranty resolution. We’re using it at DPG Supply to keep track of hardware out in the field.

All three are open-source, built for Dolibarr 16+, and designed to work together seamlessly.


Customer Inventory

What it does: Adds a dedicated tab to every customer’s third-party card showing every product and service they’ve ever received โ€” pulled from shipments, invoices, and sales orders into a single, unified view.

Key features:

  • Four viewing modes: flat list, grouped by sales order, by invoice, or by product
  • Serial number and lot tracking from shipment batches
  • Sortable columns with pagination
  • When paired with the Customer Returns module, automatically calculates net quantities (shipped minus returned) and shows return status per item

No new database tables โ€” it’s a read-only aggregation layer over your existing Dolibarr data.

GitHub: zacharymelo/dolibarr-customer-inventory


Customer Returns

What it does: Provides a full return management workflow โ€” create, validate, and close customer merchandise returns with automatic stock movement tracking.

Key features:

  • Draft โ†’ Validated โ†’ Closed status workflow
  • Automatic stock movements: returned items are re-added to your warehouse inventory on validation
  • Links returns to original shipments for full traceability
  • Serial number tracking on returned items
  • Per-line product detail with quantities, pricing, and warehouse assignment
  • Five-level permission system (read, write, delete, validate, close)

When a return is validated, stock is automatically replenished in the designated warehouse โ€” no manual inventory adjustments needed.

GitHub: zacharymelo/doli-returns


Warranty & RMA Management

What it does: A comprehensive RMA (Return Merchandise Authorization) and warranty system designed for businesses selling serialized equipment. Handles service request intake, warranty coverage tracking, guided troubleshooting, and resolution workflows.

Key features:

  • Service Requests: Full lifecycle from intake to resolution with six resolution types (component shipment, full unit swap, on-site service, and more)
  • Warranty Records: Per-serial-number coverage tied to customers and products, with automatic expiry tracking
  • Auto-Warranty Creation: When a shipment is validated, warranty records can be created automatically for serialized products
  • Guided Troubleshooting: Product-aware diagnostic checklists with multi-session logging
  • Movement Tracking: Carrier and tracking number management for outbound and return shipments within a service case

GitHub: zacharymelo/Dolibarr-Warranties


How They Work Together

These three modules are designed as independent tools that become more powerful in combination. The integration points are lightweight and optional โ€” each module functions on its own, but enabling all three creates a closed loop:

  1. A product ships out. The Warranty module can automatically create a warranty record from a validated shipment. The Customer Inventory module picks up the delivery and displays it on the customer’s card.
  2. A customer reports a problem. A service request is created in the Warranty module, which matches the serial number to the existing warranty for coverage verification and walks your team through troubleshooting.
  3. A return is needed. A Customer Return is created and linked to the service request. When validated, stock is automatically replenished. The Warranty module detects the return and advances the service request status.
  4. The customer’s card stays current. The Customer Inventory tab reflects net quantities โ€” what was shipped minus what was returned โ€” giving your team an accurate picture without manual reconciliation.

All cross-module communication happens through Dolibarr’s native element_element linking table and trigger system. There are no hard dependencies โ€” just graceful enhancements when sibling modules are present.


Getting Started

All three modules require Dolibarr 16.0+ and PHP 7.0+. Install them like any custom module โ€” drop the files into your htdocs/custom/ directory and activate from the module setup page.

Full disclosure, these tools were built with the help of AI coding tools. These modules do not strictly adhere to the Dolibarr module best practices and have not been registered with the Dolibarr foundation yet. I cared more about sharing the work that works for me than modifying the doc file to claim IDs for the modules – you may need to assign new ID for any of the modules to get it to work for you.

Categories
Offtopic Tutorials

Documenting a Success: Clearing SiC Yellowing Post Polish in a Glass Studio

Sometimes a tinkerer needs to accomplish something that literature says requires special lab equipment…

There is very little information online about correcting silicon carbide (SiC) discolouration outside of an industrial laboratory. After some experimentation in our glass studio, we successfully cleared the yellow tint from SiC using a modified atmospheric annealing process. Here is how we did it:

The Problem: Lattice Defects from Overheating during Polishing Turn White Moissanite Yellow

Yellowing in SiC is typically caused when clear or ‘white’ Moissanite gets too warm during faceting or polishing. I believe this was a 6H or 4H stone. To clear these, the material must be heated to a range where the atoms can “reset,” but doing this in open air causes the surface to oxidize and char.

The Custom Setup

We bypassed the need for an industrial vacuum furnace by repurposing high-heat glassblowing tools and cannabis paraphrenalia to create a controlled inert environment:

  • The Chamber: A high-purity quartz banger. Quartz was chosen for its ability to withstand extreme temperatures without cracking or reacting.
  • The Atmosphere: We flowed high-purity Argon through a flow meter into the bottom neck of the banger. We kept the flow very lowโ€”just enough to maintain a positive-pressure “blanket” that displaced all oxygen.
  • The Heat: An oxygen/propane glassblowing torch.

The Process

We took multiple tries at heating and cooling the stone. Three times of raising to glowing hot, briefly holding, and then cooling. There’s no way for us to know that those three heats were as good as one big heat – but this is simply what happened and worked in our little setup.

  1. Slow Warm-up: We brought the temperature up gradually to avoid thermal shock.
  2. Visual Heat Management: While we used a thermal camera and a thermocouple to monitor the start, our equipment maxed out at 1000ยฐF. We pushed significantly hotter, using the bright incandescent glow of the crystal as our indicator that we had reached annealing temperatures.
  3. The Reducing Flame: To cool the piece, we used a large, bushy reducing flame. This provided a gentle thermal taper while adding an extra layer of protection against oxidation.
  4. Cycling: We repeated this heat-and-cool cycle three times.

The Result

By the end of the third cycle, the yellowing had completely dissipated. By maintaining a strict Argon environment and controlling the descent with a reducing flame, we achieved laboratory-grade clarity using studio equipment.

With precise atmospheric control and a good “feel” for heat, the yellowing of SiC can be fixed without industrial-scale machinery.


Categories
Marketing Resources Review Software

DoliSMS: Notes After Using It

I recently added the DoliSMS module to a Dolibarr backend to handle SMS for things like invoices, order updates, and payment reminders. Itโ€™s been a solid improvement for the people actually using the system.

Iโ€™m using it with Twilio, and setup was easy. When I had a couple of questions, Massaoudโ€™s support was fast and straightforward โ€” clear answers, no hand-waving.

The module handles both automated and manual messages, with templates and variables so youโ€™re not rewriting the same texts over and over. One feature thatโ€™s been especially useful is the shared SMS inbox. Multiple permitted users can see and respond to messages in one place, which makes SMS usable for a team instead of feeling like a side channel.

From a dev standpoint, the module is clean. The API and provider connectors are simple, and it was easy to hook into existing workflows without fighting it.

Itโ€™s still under active development, updates are ongoing, and the code is well commented. Massaoud does great work, communicates clearly, and the module feels fairly priced for what it is.

10/10 โ€” would recommend both the module and the dev.

Categories
3D Print Manufacturing

Universal Mate-N-Lok Install Tool

Tools Make Work Better.

The Stage 2 is a machine that controls oxygen production and storage, that I make and sell through my small business DPG Supply. In our assembly process of the Stage 2, we use a connector called the Universal Mate-N-Lok by TE Connectivity to make field service of our equipment easier.

We use two of these connectors for connecting our compressor, and unloader assembly to the controller via panel mount Mate-N-Lok variants. Installing these connectors is difficult without a tool.

We designed a simple tool for more comfortably installing these connectors. Download and print your own Universal Mate-N-Lok installation tool using this link:

Categories
Glass Stories

How I Help Glass Artists with Making Their Own Oxygen

The Origins of the Stage 2 and DPG Supply

When I first started glassblowing, oxygen was just part of the setup โ€” something you dealt with, not something you really understood. Like most people, I used tanks. They worked well enough at first, but over time they became one of the biggest sources of friction in my studio. Running out mid-session, planning work around refills, inconsistent pressure โ€” it all quietly shaped how and when I worked.

Categories
Glass Quick Tips

Bistabil Joints – What does it mean? Where did the name come from? About Glass Series

A preview of content to be found on https://dpgsupply.com – my glassblowing tools business website.

The term “Bistabil” in the context of glassware refers to a specific type of ground glass joint characterized by thicker walls on both the inner and outer surfaces of the grinding area. This design enhances the joint’s durability and stability, making it suitable for applications requiring robust connections.

Origin and Usage

Characteristics of Bistabil Joints

  • Heavy-Wall Construction: These joints are manufactured using thicker tubing, resulting in increased wall thickness compared to standard joints. This construction provides enhanced mechanical strength and resistance to thermal stress. (ACCUGRIND (PRECISION) GROUND GLASS JOINTS)
  • Enhanced Stability: The increased mass and rigidity of Bistabil joints contribute to a more stable connection between glassware components, reducing the risk of breakage during assembly or use. (1040-HEAVY WALL GROUND MALE (BISTABIL) JOINTS)
  • Standardization: Despite the variations in wall thickness, Bistabil joints maintain standardized taper dimensions (e.g., 14/23, 19/26), ensuring compatibility with other glassware components of the same nominal size . (ACCUGRIND (PRECISION) GROUND GLASS JOINTS)

Applications

Bistabil joints are commonly used in laboratory settings where enhanced durability and stability are required, such as in: (1040-HEAVY WALL GROUND MALE (BISTABIL) JOINTS)

  • High-Temperature Reactions: Their robust construction makes them suitable for processes involving significant thermal cycling.
  • Vacuum Systems: The thicker walls provide better resistance to implosion under reduced pressure conditions.
  • Mechanical Stress Scenarios: They are ideal for setups where joints may experience mechanical strain or need to support heavier apparatus.

In summary, while “Bistabil” began as a proprietary term, it has evolved into a generic descriptor within the glassware industry, signifying ground glass joints with enhanced wall thickness for improved performance in demanding applications.

Categories
Apple Cracks Hacking Quick Tips Resources

A helpful tool for unpacking Mac TTC font families

Moving fonts is simple…

Fonts come packaged in such a way that makes them easy to install. Simply double click to install, or drag and drop into the font manager of your choosing.

Except for when they’re not

Windows will spit out an error when trying to install from a selection of fonts one might find on their Mac. Something like:

"Cannot install Font Name.ttc - The file 'D://Font Name.ttc' does not appear to be a valid font."

This error stumped me for a few minutes, and through a few Google search results. With a bit of digging I found a tool called transfonter that unpacked my Mac fonts and made them work on my Windows machine:

This frustration may be been manufactured…

So, if Microsoft’s Font Validator is right, then I assume Apple did a bad job implementing the specifications. (And maybe even on purpose, to stop distribution of the font to Windows?)

– Arjan
https://superuser.com/a/121746

As one user here explains, it seems that Apple has intentionally broken their fonts to make it difficult to move them onto a Windows machine.

Still looking for the link? It’s here.

Categories
Glass Resources

A Lampworker’s Introduction to Safety in the Glass Studio

This is not an official guide, and the following is offered as a free online article for entertainment purposes only. I accept no responsibility or liability for your actions after reading this text.

You can be seriously injured in almost any workshop

The glass studio can be a very dangerous place, but it doesn’t have to be. With proper respect and care, a lampworker can spend hundreds of hours behind their torch without incident or injury. To ensure such a positive track record, a few rules and guidelines must be adhered to at all times.

The most obvious risk to a lampworker is a burn. I am often asked, “isn’t it hot?” And the short answer is, “yes – very!” Our torches burn a flame many thousands of degrees (1980*c, 3590*f) in temperature. Incidentally, our workspaces, tools, and work can be very hot indeed. Some torches produce so much heat, that they require assistive cooling devices to prevent from overheating and melting themselves.

With all of the hot, dangerous things in our shop – it’s a miracle we aren’t burning ourselves at every turn. There are a few simple techniques to reduce the chances of being injured in the studio.

20 Helpful Safety Tips:

  1. Assume it’s hot! First and foremost, always assume that anything in the studio that could be hot to the touch; is. Most items on your bench, and near to your workspace will absorb radiant heat as you work. This radiant heat can make your bench, tools, materials, and anything else within line-of-sight of your torch flame hot to the touch.

    If you are unsure of whether or not something is hot, use the back of your hand to sense the radiant heat by placing it close but not touching the suspect item. A burn on the back of the hand will restrict work less than one to a fingertip or palm.
  2. Never accept a piece of passed glass overhand! What this means is when someone passes you a piece of glass, always grab below their hand on the handle away from the perceived hot end.
  3. Never catch falling glass! Let the piece fall to the floor or bench, and then pause. It may be necessary to stand back as to prevent the glass falling onto your foot. Grab your nearest pinching tool (tweezers) and use those to pick up the item. Do not panic, do not rush, and do not reflexively dive for the falling work piece.

    A broken piece is better than a burned palm or sliced digit. There are lampworkers who can no longer practice due to injuries sustained from catching falling glass. This is a very serious risk!
  4. Dress appropriately! Your clothing is your second layer of defense, should an accident happen. Your first line of defence is this safety training, use it well and you will not need your clothing to protect you from a burn. Do not dress as if planning on burning yourself.

    Foremost, dress for comfort. Heat stroke and dehydration are very real risks while working behind a torch. Dress for the weather and the workload you will be undertaking. Working in 40* heat while wearing a full mylar suit is a surefire way to black out.

    Proper attire can include:
    1. Approved Safety Glassesย 
    2. Close toed shoes
    3. Loose fitting pants that fit over the cuff of your footwear
    4. Short sleeves, or a long sleeved shirt with tight fitting cuffs
    5. Hair ties for long hair
    6. Additional safety equipment like insulating gloves, vambraces, or hoods are worn in specific situations – though not required for most flame work.
  5. Grab tools by their handle! Graphite, and brass tools can absorb a lot of radiant heat as well as hold onto heat absorbed through contact for a long time. Accidentally grabbing a tool by the working end is a fast way to a burn.
  6. Do not force the glass! Glass if fragile, and using too much force can and will break glass in your hand. Be patient and allow for the heat base to soak into the glass before trying to make it move.
  7. Melt stringers and spikes back into balls! If you pull a thin thread of glass, or create a spike – take another second to melt the string back down into a ball. Thin threads and spikes create a puncture hazard, and can even break further when inside the body.
  8. Bubbles should melt – not pop! If you are blowing a bubble, stop before it becomes paper thin. When thin, the glass is weak and can pop under the pressure of your lungs. This wafer thin glass is light, and floats on the air. It’s colloquially known as bubble trash, and is an unnecessary respiratory hazard. If you blow your glass too thin, put it back into the flame to gather before popping the bubble within the flame.
  9. P before O or up you go! When lighting your torch, begin by opening your gas valve slightly and igniting a pilot flame. Only when this pilot flame is burning, should you introduce oxygen. Doing so in the opposite order can create explosive conditions and is very dangerous. The obverse is true as well: when shutting off your torch, shut off your oxygen before your gas.

    A handy acronym for remembering the on/off order is P.O.O.P. – Propane, Oxygen, Oxygen, Propane
  10. Install Flashback Arrestors! Flashback arrestors prevent a dangerous situation wherein the flame moves backwards into the torch and through the gas lines creating an explosion within the lines.ย 
  11. Ventilate your workspace! Our flames and the fumes from melting glass can be harmful in both the long and short term. Ensure adequate air exchange to prevent exposure to these harmful gasses.
  12. Keep tanks outside! Unused tanks of compressed gas should be stored away from open flame, and out of doors in an easily accessed area. In the event of fire, it poses a great risk to firefighters and anyone within the building to have compressed explosive gas cylinders inside.
  13. Keep your workspace clear of flammable or combustible materials! Lighters, aerosol cans, wood, and other flammable materials should be kept well away from your torch and work to avoid the risk of an unintended fire.
  14. Keep a fire extinguisher nearby! I hope this needs no further explanation. While glass doesnโ€™t burn, anything flammable it touches while workable can.ย 
  15. Anneal your work! Leaving stress trapped in glass is a great way to let it break randomly. Annealing releases trapped stress and allows for glass to be used safely.
  16. Do not put glass inside of someone else!* Jewelry, sex toys, and other objects intended for insertion into the human body must be properly annealed and checked with a polariscope! If you do not have access to a kiln, and a polariscope – DO NOT MAKE SEX TOYS OR ANY OBJECT FOR INSERTION INTO A HUMAN!
  17. Stretch! Take it easy! This is exercise and involves many repetitive motions. Warm up before you begin, and take many breaks along the way. It’s easy to injure yourself, or spur along a strain related injury by lampworking. Listen to your body, and take care of yourself.ย 
  18. On inhaling: glass blowers often puff air into a hollow vessel to expand its walls. It’s also possible to contract the walls of the vessel in much the same way. Suction should only be applied in situations where the risk of pulling hot vapor or fumes into your mouth is negligible.ย 
  19. On treating a burn: Stop lampworking immediately. Glass burns can be terrible, but are often less severe than a similar sized burn from metal or another material. Glass being a poor insulator can save you from a more serious burn if quick action is taken.

    Treat burn wounds quickly as directed by a healthcare professional.
  20. Keep a first aid kit on hand. Cuts, burns, scrapes, and other injuries can almost all be addressed by the contents of a standard first aid kit. Keep one on hand in case of emergency.

There are more rules and guidelines that can help you in the shop, but I’ve just not thought of them yet – if I’ve missed something obvious to you, leave a comment and help me improve this article!

Categories
Glass Resources

Beginning Glassblowing

Glass what?!

Melting solid glass into liquid, and balancing it long enough for it to solidify again – maybe puffing in some air to inflate the bubble – this is lampworking.

When you think of glass blowing, you likely think of grand furnaces with workers dipping steel handles into large vats of molten glass before puffing, shaping, and working the molten glob into a form or vessel. That’s called furnace work, or hot shop – as I’m sure you could guess – the environment is more than warm!

Categories
Quick Tips Wordpress

Motopress Widget Won’t Insert into Page Content

While working on a recent customer project, I hit a roadblock using the Motopress WordPress plugin. I couldn’t get the widget, Getwid block, or shortcode to dump anything into the content section of my page. The solution was simple, though not obvious without reading their docs.

I tried a few different things, including posting a ticket to Motopress support.

In the end, the solution was simple and two-fold.

A little bit of a suggestion first: use the Gutenberg/Getwid block, as it has a sidebar interface and is simple to use. Otherwise, use the shortcode [mphb_availability_calendar] – though the shortcode requires a few additional parameters to do anything!

See the example below for an example that outputs a 2 month calendar, of availability for the Accommodation Type ID 123:

[mphb_availability_calendar id="123" monthstoshow="2"].

Step 1:

You must include an Accommodation Type ID for the Block to display results.

First: Ensure you are referencing the Accommodation Type ID in the options panel, found in the sidebar. The ID corresponds to one of the accomodation types that you have set up in the Motopress Accomodations settings. You can find the ID by opening the specific Accomodation Type and looking in the URL bar to find the ID.

In my case, the ID is 457 as seen in the URL when I open the Accomodation Type to edit it

You can find the ID of your specific Accommodation Type in the URL found in the address bar of your browser while editing that Accommodation Type i.e. 457 as seen in the URL below:

https://your-website-url.com/wp-admin/post.php?post=457&action=edit

Step 2:

This step may or may not be necessary for you. Due to the simplicity of my customers booking arrangements, we needed to check another setting in the backend in order to show availability on the calendar.

Tick this box to enable availability results without a search

Test

If you have added the Accommodation Type ID, and in some cases ticked the Skip Search Results option on, you should see the calendar of availability output on your page.

Further Troubleshooting

If for some reason, it’s still not working – or your calendar is empty, you may need to generate accommodations or complete other steps of Motopress Setup.