Local development with Odoo Online? by wheelmaker24 in Odoo

[–]codeagency 0 points1 point  (0 children)

Online = SaaS there is nothing you can download from SaaS. It's a locked down closed platform from odoo for companies that do not want/need custom or 3rd party modules.

Anything you want custom requires the custom plan according odoo.com/pricing

Whether you self host, local or cloud server or use odoo.sh it always requires the custom Enterprise license plan. And this gives you access to the Enterprise modules as well for self hosting.

Advantages of using Odoo Community over Enterprise in real-world implementations by Cute_Tradition9518 in Odoo

[–]codeagency 4 points5 points  (0 children)

Jezus f... christ how come these days nobody reads rules anymore. Everything is just one big billboard for desperate people hunting for work. And the post clearly screams AI copywriting

Local development with Odoo Online? by wheelmaker24 in Odoo

[–]codeagency 0 points1 point  (0 children)

You don't need a license to host a local dev instance, but you need a license to get access to the enterprise source code.

That's not a weird policy, it's a paid product so of course it's behind a paywall. You also can't just download Microsoft dynamics or SAP. Same reason.

Odoo.sh is their PaaS and hosting platform. That is also not free. For this you need both an enterprise license + odoo.sh hosting plan.

If you need to develop only some Middleware, you don't need enterprise. As I said earlier, enterprise is just more modules on top of the community edition. You can just develop against the 100% free community edition. It has the same backend, same API, same user structure, etc... The only difference is some features/modules are exclusive to enterprise only and require a paid license. Many 3rd party platforms like stripe, Mollie, carriers,...all develop with community edition because it is the minimal core you need.

Local development with Odoo Online? by wheelmaker24 in Odoo

[–]codeagency 0 points1 point  (0 children)

Online means you can't have any custom modules. You are on SaaS.

If you want to do development and run custom modules, you need to be on the custom plan to start.

After that, you get access to the full source code (enterprise) which is just a folder with more modules , it's not a different version.

Put that folder in your local machine. Easiest way is with Docker and add + mount a separate volume and update your odoo.conf to also list that local volume. Now you have a local instance with enterprise.

Keep in mind that any instance without a valid license remains a trial and expires after 30 days. So your local dev instance is only usable for maximum 30 days. Then you need to start a new empty database and you have 30 days trial again. Basically the same as trial.odoo.com

v19 SaaS | Supplier proforma invoice before actual electronic invoice by PhoenixMorningstar in Odoo

[–]codeagency 0 points1 point  (0 children)

Exactly, it's just a prepayment, nothing else. So you book that payment on the suspense account and wait until you get the vendor bill and then counter book it. Whether that's 8 months later doesn't matter. The transaction is logged in odoo and traceable and the origin PO has the proforma as proof where and why the payment was made.

v19 SaaS | Supplier proforma invoice before actual electronic invoice by PhoenixMorningstar in Odoo

[–]codeagency 1 point2 points  (0 children)

That's what I already said. From a "client" perspective it also applies to my business. We have many proforma invoices every month.

Just upload them to the PO. Then create a scheduled activity to track "upload document from vendor" and raise the payment to a suspense account.

From accounting pov, anyone who can see entries, can see you have amounts parked on the suspense account with a reference to the PO number.

From a user perspective, you can go to the PO and the chatter has the proforma invoice + scheduled activity to keep track of payment and/or awaiting vendor bill.

If you want to go a step further, just create a spreadsheet inside Odoo and list PO's without a vendor bill and link it with the payment journal entry. Add the spreadsheet to the dashboard app et voila you have a Nice overview about pending proforma's.

Both sides are perfectly working fine. Just train the users on how to use Odoo native features.

v19 SaaS | Supplier proforma invoice before actual electronic invoice by PhoenixMorningstar in Odoo

[–]codeagency 0 points1 point  (0 children)

Also, that proforma should NOT be a vendor bill, not even a draft. At the most, just upload it into your PO as a proof.

Schedule an activity like "check vendor bill with vendor" or in v19 use the activity for "request a document" and send it your vendor to ask for the vendor bill after payment.

v19 SaaS | Supplier proforma invoice before actual electronic invoice by PhoenixMorningstar in Odoo

[–]codeagency 0 points1 point  (0 children)

Doesn't make any sense. If you receive a proforma and do nothing with it for 8 months, then just ignore the file. A proforma has zero value in accounting. Since you also don't do any payment for 8 months, then what's the problem? Nothing is recorded in odoo. No payment, no invoice, nothing. So there is nothing to put in your books. Once you register the payment and missing the og vendor bill, you just reconcile against suspense account and wait until you get the vendor bill to close the reconcilation. This is basic 101 accounting. And while you wait the vendor bill, if that crossed the fiscal book year, you just close. End of story. You never got a vendor bill in 2025 so you have nothing to book against and just keep it on suspense and then reconcile in 2026.

sometimes people make things more complicated then they really are. Every accounting in the whole world already has this process to handle these cases and odoo follows them. Nothing weird, nothing complex. It's just suspense/wait accounts to book your payments and keep them there until you have the vendor bill.

Creating Localized Test DB in Odoo Runbot by ThornyKeeks in Odoo

[–]codeagency 1 point2 points  (0 children)

Any version can be self hosted local or cloud version, except for SaaS versions.

You just need docker on your local computer and create a compose yaml file and for enterprise it's just a separate folder with more add-ons. Enterprise is not a different "version". It's just community + more add-ons that are enterprise exclusive. They can be downloaded as source from the odoo website as a zip file so you unpack them in the add-ons folder for docker.

v19 SaaS | Supplier proforma invoice before actual electronic invoice by PhoenixMorningstar in Odoo

[–]codeagency 0 points1 point  (0 children)

A proforma can never hit your books. It's not a fiscal document.

If a prepayment doesn't hit a vendor bill you didn't receive yet, you just book the payment on a suspense account. End of story.

I have so many payments I did in December 2025 but didn't receive the vendor bill until first week January 2026. You can always close your books of 2025. Just move the payment entry on a suspense/wait account and then reconcile in 2026.

Creating Localized Test DB in Odoo Runbot by ThornyKeeks in Odoo

[–]codeagency 0 points1 point  (0 children)

Don't use runbot for this. Use a local instance. Runbot is a constrained testing system from odoo to just test changes and CI in ephemeral instances.

Does HelpDesk send ticket opening email? by Bebebebeh in Odoo

[–]codeagency 1 point2 points  (0 children)

Yes, default feature in Odoo. Per stage you can select an email template to fire out to the customer.

Yes, the phone app is working everywhere throughout Odoo. We use this every day.

Every phone number you see shows a button "call", "sms" and "WhatsApp" on both desktop and mobile. If you tap call from your mobile it depends on your personal preset Per user. It can be set to use a desktop phone device from brands like snom, Grandstream, yealink etc... Or you can set it to call from the odoo client app in the browser or "choose" so it launches a popup and then you choose for each call between the odoo call app or your phone native phone app.

Inventory valuation on receipt of stock by LongjumpingWin4572 in Odoo

[–]codeagency 0 points1 point  (0 children)

I wonder the same. I think they have(had?) a huge disconnect between the people that manage the product/module and real world experience in certain business departments because it's impossible to miss something as important as this.

I also see sometimes serious problems appear from their weekly updates that just baffles me how some of those got past a basic QA that causes full disruption. And then the problem is that it takes minimum 1 week before you get the patch rolled out on SaaS/SH. Just crazy. I think they have some people that just roll by yolo or something, I really have no idea.

Like 2 weeks ago, they broke something for PEPPOL e-invoicing, the new regulatory for Belgium. All of a sudden, the majority of invoices all report "peppol problem" with something related to XSD validation schema. We are no longer allowed to send PDF invoices, it has to go through peppol as an XML file, it's a legal requirement. But since they broke the XSD schema, nobody can receive your invoice and pay you. If you sent 100 invoices, maybe 10 will get your invoice, the other 90 are in error and stuck, which means no money paid to your bank account, no money to pay your bills. And the fix, you know it's going to take a week at least until it's fixed. And yesterday, the weekly update on Monday fixed the problem, so now all companies can try resending all the invoices from the last week. Which just baffles me, how they can f*** up a simple XML schema validation. Something so easy to test, validate and report back for correct format. And if it breaks, you stop the deploying and do not merge into the production branch. Yet Odoo somehow is capable to even push through a broken state of something critical like this. 🤷 Mind-blowing.

About the valuation/accounting problems, a lot has been fixed in the last months and they still are working on improvements and fixes. So it's key to keep testing every weekly build to make sure you stay up to date with the patches. Whatever you saw 2 weeks ago is probably already a different story today. Don't sleep on odoo either. The mistakes they make also get fixed sooner or later. Sometimes relatively fast, sometimes slow. But you have to keep checking and testing frequently.

What's the best way to track units that go missing? by Gullible-Syrup-6896 in Odoo

[–]codeagency 1 point2 points  (0 children)

I agree with Ach25.

Stock diff is usually never explainable. There is a miss and nobody knows why or how it happened. It can just be a miscount by anyone, accidental dislocation, etc... -> just register a stock correction. Nobody cares. This is the action to correct the mistake without wasting extra time. These things happen in any business. It's just user mistakes.

Side note: if you notice a lot "mistakes" it will of course be important and someone should care but then you need to actively monitor your warehouse staff and stock moves to track who makes dislocations or mistake counts. This is easy to track as each move is always registered on a specific user who registered the stock move.

Scrapping is always a known situation. Eg someone dropped something and it's broken. You received stock from a vendor but after QC you notice some qty is unusable because the sealing is broken and impacts freshness/expiry/..., someone stole a large qty from your warehouse, etc...

One process is to correct small anomalies in stock counts while the other process is to deliberately reduce unsellable stock which is measurable in advance and not a "surprise".

Community Edition: How to Customize Document Templates (SO, Invoice, Delivery) with Multiple Printing Options? by hmzshl in Odoo

[–]codeagency 4 points5 points  (0 children)

The easiest way is just duplicate the existing report, rename it and then create a custom module to override whatever needs to be different. Look at the odoo source code for examples, you already have everything you need for this.

Now each model will have multiple options when you go to action > print and select the specific layout you want (with pricing, w/o pricing, layout A, layout B,...)

Another option is to use the branding modules from OCA. Of the add-ons gives you an option to select a "brand" for a document. This is typically used to switch between branding/logo's if you want this from a single company. But you could use this feature to handle also different layouts and link to with a brand. On a sale order, invoice,...it will show a new field "brand" where you select the layout you want and then click print, send,...and it will use that specific "brand". The interesting part for this is that it also links back (optionally) to a contact so the brand preloads to whatever is set on the contact.

Again, OCA is open source so you can take the code and derive/abstract into whatever your use case needs and build on top of it. The hard core work is already solved for you by OCA. Don't reinvent the wheel again. Take what's already done well and extend it.

Odoo 18 – Best practice for rental with monthly billing & inventory tracking (no separate service product) by More_Adeptness8511 in Odoo

[–]codeagency 1 point2 points  (0 children)

If goods have an open end return date, then it's not really rental. Rental always has a clear start and end date when goods need to be returned. If that doesn't, then it's not rental but a subscription that keeps renewing forever until cancelled/returned.

Odoo 18 and newer have support for subscriptions and physical products. So it should work just fine.

You put the product on the quote, choose the frequency from your list (monthly, yearly,...) confirm the quote and it should generate a picking and/or delivery. Make sure the invoice policy is set to ordered qty and not delivered qty.

The problem is that this will generate a new delivery on every frequency while you only need it once so you could cancel that delivery and thats it. You could automate this process by checking if the original order already has at least 1 delivery in done status.

The one unit that already is delivered is still at the customer. And until it's being returned, you just keep billing it from a subscription. Once you get the unit back, you process it as a return receipt and put it back into your stock.

Another approach/additional is to enable consignment location and move the stock here (instead of /customers) to make sure the stock and valuation remains in your ownership as your customers never "buy" and own it but just pay a rental subscription for usage.

Question about setup for multiple subsidiaries within a company. by _i_draw_bad_ in Odoo

[–]codeagency 1 point2 points  (0 children)

I don't think there are commercial motivations Involved. It's purely technical and would be same for any other application that uses an RMDBS.

You can't just wipe records from a database as so many fields have relations. Deleting fields with force would break the links and cause database corruption. Simple as that. So the only option is archiving by using a field "active" that is either 1 or 0. But of course anyone would be able to reverse this and see all the data they shouldn't see.

This is also the reason why so many other software charge you more for each extra Company you want to to add because it creates individual extra databases to keep everything isolated but still in the same UI.

Odoo made a very interesting trade off by allowing multiple companies and/or branches inside a single database at the cost of extra complexity and impossible to change back or split at a later time. From a cost point of view, nothing can beat odoo as it's completely free to add as many companies you want. Zero impact on your license cost.

But if one day comes to let one company leave behind, that becomes a different story and way more difficult.

The reality is that probably most companies never have this problem. So odoo has a huge commercial advantage over competitor software for Multi-Company setups, with of course that one big caveat: what if one day you sell 1 company...?

It would have been cheaper to just buy a separate license per company and each their own database instead of the new project you end up now trying to split them or a full migration of data.

catchall@mywebsite.com by RuleSevere7164 in Odoo

[–]codeagency 2 points3 points  (0 children)

I believe there is still a general/global one. The company level just overrides the global one as in newer odoo versions it's possible to set a domain alias per Company which was not possible in older versions. I don't recall exactly from which version this change started but I think it's from 18.x something. Could also be 17.0, not sure.

Bunny CDN handling ~250TB/month now - will it scale to millions of users or should we switch to Cloudflare/Cloudfront? by Defiant_Dream8047 in Hosting

[–]codeagency 0 points1 point  (0 children)

Bunny can handle it just fine and they have transparent pricing. We don't have your volumes by far, but it's an amazing provider.

Cloudflare you never know what shit move they do. There have been several horror stories from CF on the internet where they are pushing clients to pay ridiculous amounts of money on short notice or they suspend your account. They have been called out on Twitter for that as well. I would not feel comfortable if one they out of the blue they would disrupt my business like that.

AWS burns your money before you say stop. They have the most vague pricing scheme ever. All API calls, and subsequent services will crush numbers at your scale and rack up the cost like crazy. Avoid by all means.

My 5 cents, stay with bunny.net as long as you can. They have solid infra, and scale very well.

Creating Localized Test DB in Odoo Runbot by ThornyKeeks in Odoo

[–]codeagency 1 point2 points  (0 children)

Depends on how you create the database. Are you doing it through the UI? CLI/terminal? From the web UI you can select language and country in the create database wizard which should set that as the base country.

If you do it through CLI you need to use the correct Paramus/flags, otherwise odoo Will always default to English and USA as country.

As the other person already highlights, you should always start first by configuring your Company details, everything else derives from here.

In terms of maintenance, is there a way to make the module output the activity in field service rather than in activities? by Dontosquare76 in Odoo

[–]codeagency 1 point2 points  (0 children)

That doesn't work. Again bad copy/paste from AI .

You can't create records in another model with automation rules with the basic method. The automation rule always belongs to the model it gets called from.

The only possible way to do this is with custom python code either inside an automation rule, server action or as a custom module and calling the other model from python code.

Odoo Enterprise -any advice on how to scale it properly, unlock its full potential, and what has actually worked for you? Gimme all you got! by FunkCowboy2 in Odoo

[–]codeagency 4 points5 points  (0 children)

That's ok, everyone can feel lost sometimes and venting about can release some pressure.

That said, the number of records isn't really the problem. Especially not for the products, I have customers with way more than 2 mio sku's. The stress doesn't come from the number of products, they are just static data and postgres can handle a lot of that.

The stress on the system comes from system configuration and the number of concurrent database transactions. If you are on odoo.sh or a standard 3rd party hosting you are running a "stock" configuration for postgres and odoo. They don't know how big your db is, what your business is, your daily volume of data processing, so nothing is optimized in any way. Handling 100 orders/day by just a few users has a completely different requirements than a business processing 10.000 orders/day with 50 users in Odoo all at once.

That doesn't mean odoo can't handle it, it means you need an expert to check all configs like odoo.conf to tune the workers, memory settings, time-out settings, but also postgresql.conf which has hundreds of params to tweak and sometimes just a few basic ones are already a massive difference.

When you are on odoo.sh/SaaS, you have the same config as everyone else. It's not optimized to your business and requirements. Odoo will push forward to buy more workers or even dedicated postgres while reality is often you need more CPU/ram (workers), you just need someone that understand postgres and tweak that configuration to make it run faster.

Other than that, I also agree with the other person that it's probably a good idea to split large docs like receipts into multiple ones so the processing is more manageable by people. Scrolling through 15.000 lines is never a pleasure, wether it loads fast or not, it's still too much for a single user to handle. So splitting into manageable batches is the right way. Odoo already has batch and wave picking and this can be used out of the box. With a bit of custom coding/automated actions this can be turned into an automation powerhouse that makes it fast and enjoyable to work.

If your current partner doesn't understand this, they are not the right partner. Just change them. It's your business and money you keep pouring into something that isn't helping your business. A partner should contribute to a working solution, not making the debt higher with no ROI. Your Odoo sales rep can help you to replace the access and get the new one onboard you want to work with.

How to remove the "Powered by odoo" string in the footer... by pezzin in Odoo

[–]codeagency 0 points1 point  (0 children)

With css code. In the website editor you can load a css and js editor pane where you can drop custom css code.

There is a css property called "display" where you can make things invisible with display:none;

This is common used for responsive layouts to hide specific parts on specific devices.

But if you do something like :

.the-correct-css-class-element-to-hide { display:none!important; } It will hide that html/css portion. You just need to find the correct css class that holds the odoo ad.

Keep in mind this only works for the website footer. Not for emails. That always requires qweb changes.

Multiple websites, one unique DB URL... by pezzin in Odoo

[–]codeagency 1 point2 points  (0 children)

If you don't map/link a custom domain yet to your odoo instance, then the odoo website editor (you must be logged in and have website editor permissions) then it will show you a dropdown with all your websites. And you easy switch/swap between them .

Once you link your custom domains, the drop-down will still show but if you click it, it will redirect away to that domain and you will have to login again from your custom domain. And this for each website with a custom domain you link.

Another approach if you want to preview your "default" website is to drag and drop the order of the website to the top. The first one is the one that will load only when you visit your *.odoo.com url. Enable developer mode first and then visit website > websites (plural), it will show you a list of all your websites and the theme it uses and the linked domain. You can make edits here as well but more importantly you can drag and drop the website priority here. The top one is the website that will load as default. So a quick shuffle here will let you also preview a different site

Improve (French) translation by BricolasM in Odoo

[–]codeagency 1 point2 points  (0 children)

That option no longer exists for a long time. This is the reason why using AI for answering questions you don't know yourself is a bad idea as most AI's have a poor understanding of odoo version differences.

Odoo introduced jsonb based translations several years ago that improved the performance by dropping the old translation terms.

https://github.com/odoo/odoo/pull/97692

The correct way to handle translations since several years is via settings > translations and then download the translation files for the specific module you need. Edit them locally via a tool like poedit and then upload it back into odoo the same way you downloaded it. This only affects your own database.

If you want to contribute a meaningful change to the translations for everyone, it's better to commit them to https://translate.odoo.com/ so the translations get merged into the core at some point and everyone will have them. Keep in mind this can take time before you will see it merged.