# Computed Field - Shipping Method

**URL:** <https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547>\
**Category:** Using my Dolibarr\
**Tags:** v19, Question, Help\
**Created:** [July 8, 2024, 11:09pm UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547 "2024-07-08T23:09:54Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![jh482002](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/j/8e7dd6/32.png) [@jh482002](https://www.dolibarr.org/forum/u/jh482002)\
**Post date:** [July 8, 2024, 11:09pm UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547/1 "2024-07-08T23:09:54Z")

</div>

Hello,  
I have been trying to generate a Complimentary attribute in Sales Orders module to ‘compute’ the **Shipping Method** …to no avail!  
This is what I’ve tried so far:  
(($reloadedobj = new Expedition($db)) && ($reloadedobj-\>fetchNoCompute($objectoffield-\>id) \> 0 ? $reloadedobj-\>shipping\_method: ‘not found’)

This produces nothing.  
Can someone clue me in? What am I doing wrong?

---

<div class="post-metadata">

**Author:** ![jh482002](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/j/8e7dd6/32.png) [@jh482002](https://www.dolibarr.org/forum/u/jh482002)\
**Post date:** [July 8, 2024, 11:13pm UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547/2 "2024-07-08T23:13:10Z")

</div>

Also tried this:  
(($reloadedobj = new llx\_c\_shipment\_mode($db)) && ($reloadedobj-\>fetchNoCompute($objectoffield-\>id) \> 0 ? $reloadedobj-\>libelle: ‘-1’)

---

<div class="post-metadata">

**Author:** ![jh482002](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/j/8e7dd6/32.png) [@jh482002](https://www.dolibarr.org/forum/u/jh482002)\
**Post date:** [July 8, 2024, 11:15pm UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547/3 "2024-07-08T23:15:16Z")

</div>

I did discover that the following:  
$objectoffield-\>shipping\_method\_id

at least results in the index of the shipping method correctly.

But how to get the label?

---

<div class="post-metadata">

**Author:** ![PimDolie](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/p/d78d45/32.png) [@PimDolie](https://www.dolibarr.org/forum/u/PimDolie)\
**Post date:** [July 9, 2024, 6:36am UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547/4 "2024-07-09T06:36:44Z")

</div>

Hi,

Is this for adding to each orderline?

and did you add this in the product?  
so an extrafield shipment\_mode?

or what is it that you would like to produce

---

<div class="post-metadata">

**Author:** ![jh482002](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/j/8e7dd6/32.png) [@jh482002](https://www.dolibarr.org/forum/u/jh482002)\
**Post date:** [July 9, 2024, 1:49pm UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547/5 "2024-07-09T13:49:08Z")

</div>

Hello @PimDolie,  
I’m trying to make a Complimentary attribute in Sales Orders module to ‘compute’ the **Shipping Method**.

I selected a Shipping Method when creating a Sales Order. However, I think this information is actually stored in the Shipment module, correct?

Thanks

---

<div class="post-metadata">

**Author:** ![jh482002](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/j/8e7dd6/32.png) [@jh482002](https://www.dolibarr.org/forum/u/jh482002)\
**Post date:** [July 9, 2024, 6:39pm UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547/6 "2024-07-09T18:39:49Z")

</div>

As of right now, {object\_shipping\_method} tag does not produce anything in my Sales Order ODT template file.  
v19.02

@PimDolie  
So, as a workaround, I’m trying to make an extra field (Complimentary attribute) to compute or link to the Shipping Method specified and stored in the Shipment module.  
(For some reason {object\_shipping\_method} works just fine with Shipment ODTs.)

Then all I need to do is add the new {…options…} tag to my Sales Order ODT.

Maybe there is another way?  
Thanks

---

<div class="post-metadata">

**Author:** ![pcbleu](https://www.dolibarr.org/forum/user_avatar/www.dolibarr.org/pcbleu/32/3120_2.png) [@pcbleu](https://www.dolibarr.org/forum/u/pcbleu)\
**Post date:** [July 16, 2024, 10:00am UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547/7 "2024-07-16T10:00:26Z")

</div>

Hello 🙂

can you try  
`(($reloadedobj = new Expedition($db)) && ($reloadedobj->fetchNoCompute($objectoffield->id) > 0 ? $reloadedobj->shipping_method: ‘not found’))`  
or  
`(($reloadedobj = new llx_c_shipment_mode($db)) && ($reloadedobj->fetchNoCompute($objectoffield->id) > 0 ? $reloadedobj->libelle: ‘-1’))`

Good continuation

---

<div class="post-metadata">

**Author:** ![jh482002](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/j/8e7dd6/32.png) [@jh482002](https://www.dolibarr.org/forum/u/jh482002)\
**Post date:** [July 22, 2024, 5:31pm UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547/8 "2024-07-22T17:31:46Z")

</div>

Hello @pcbleu

I tried your suggestions with the following results:

Bad string syntax to evaluate (found chars that are not chars for simplestring): (($reloadedobj = new Expedition($db)) && ($reloadedobj-\>fetchNoCompute($objectoffield-\>id) \> 0 ? $reloadedobj-\>shipping\_method: ‘not found’))

and

Bad string syntax to evaluate (found chars that are not chars for simplestring): (($reloadedobj = new llx\_c\_shipment\_mode($db)) && ($reloadedobj-\>fetchNoCompute($objectoffield-\>id) \> 0 ? $reloadedobj-\>libelle: ‘-1’))

Maybe I did something wrong?

Thanks

---

<div class="post-metadata">

**Author:** ![DG-Rilling](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/d/e495f1/32.png) [@DG-Rilling](https://www.dolibarr.org/forum/u/DG-Rilling)\
**Post date:** [July 22, 2024, 6:32pm UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547/9 "2024-07-22T18:32:54Z")

</div>

please see here:

> [@Complementary Lines (products sold history) to show in Sales order](https://www.dolibarr.org/forum/t/complementary-lines-products-sold-history-to-show-in-sales-order/24537/11):
>
> This is because of testing for not allowed chars in for computed fields. The check is done in ~/htdocs/core/lib/functions.lib.php at function dol\_eval(… if (preg\_match('/[^0-9]+\.[^0-9]+/', $s)) { // We refuse . if not between 2 numbers

---

<div class="post-metadata">

**Author:** ![jh482002](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/j/8e7dd6/32.png) [@jh482002](https://www.dolibarr.org/forum/u/jh482002)\
**Post date:** [July 22, 2024, 6:46pm UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547/10 "2024-07-22T18:46:36Z")

</div>

Hello @DG-Rilling

Thank you for the input.

Is there any more information on this error? Is this because of the formula or the result?

Is there anything I can do to work around this? All I want is to load the Shipping Method for use on Sales Order documents.

---

<div class="post-metadata">

**Author:** ![pcbleu](https://www.dolibarr.org/forum/user_avatar/www.dolibarr.org/pcbleu/32/3120_2.png) [@pcbleu](https://www.dolibarr.org/forum/u/pcbleu)\
**Post date:** [July 22, 2024, 8:16pm UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547/11 "2024-07-22T20:16:00Z")

</div>

Hello 🙂

The problem is due to the text in the first post - quoted string ‘-1’ were tranformed with `‘-1’`  
can you try  
`(($reloadedobj = new Expedition($db)) && ($reloadedobj->fetchNoCompute($objectoffield->id) > 0 ? $reloadedobj->shipping_method: 'not found'))`  
or  
`(($reloadedobj = new llx_c_shipment_mode($db)) && ($reloadedobj->fetchNoCompute($objectoffield->id) > 0 ? $reloadedobj->libelle: '-1'))`

Good continuation

---

<div class="post-metadata">

**Author:** ![jh482002](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/j/8e7dd6/32.png) [@jh482002](https://www.dolibarr.org/forum/u/jh482002)\
**Post date:** [July 22, 2024, 9:24pm UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547/12 "2024-07-22T21:24:44Z")

</div>

—Any other ideas?—

---

<div class="post-metadata">

**Author:** ![pcbleu](https://www.dolibarr.org/forum/user_avatar/www.dolibarr.org/pcbleu/32/3120_2.png) [@pcbleu](https://www.dolibarr.org/forum/u/pcbleu)\
**Post date:** [July 22, 2024, 9:44pm UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547/13 "2024-07-22T21:44:44Z")

</div>

Hello 🙂

The problem is due to the text in the first post - quoted string ‘-1’ were tranformed with `‘-1’`  
can you try  
`(($reloadedobj = new Expedition($db)) && ($reloadedobj->fetchNoCompute($objectoffield->id) > 0 ? $reloadedobj->shipping_method: 0))`

Good continuation

---

<div class="post-metadata">

**Author:** ![jh482002](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/j/8e7dd6/32.png) [@jh482002](https://www.dolibarr.org/forum/u/jh482002)\
**Post date:** [July 22, 2024, 9:52pm UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547/14 "2024-07-22T21:52:21Z")

</div>

OK

I tried that as well as:  
(($reloadedobj = new Expedition($db)) && ($reloadedobj-\>fetchNoCompute($objectoffield-\>id) \> 0 ? $reloadedobj-\>shipping\_method: 1))

I did not get the “Bad string syntax to evaluate (found chars that are not chars for simplestring):” error.

In fact, I got nothing at all. (blank)

Any other ideas?

---

<div class="post-metadata">

**Author:** ![pcbleu](https://www.dolibarr.org/forum/user_avatar/www.dolibarr.org/pcbleu/32/3120_2.png) [@pcbleu](https://www.dolibarr.org/forum/u/pcbleu)\
**Post date:** [July 23, 2024, 6:42am UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547/15 "2024-07-23T06:42:48Z")

</div>

Hello

It is probably because the ($objectoffield-\>id) does not represent an expedition record

Make sure that you use this formula with an expedition extrafields

Good continuation

---

<div class="post-metadata">

**Author:** ![DG-Rilling](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/d/e495f1/32.png) [@DG-Rilling](https://www.dolibarr.org/forum/u/DG-Rilling)\
**Post date:** [July 23, 2024, 8:11am UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547/16 "2024-07-23T08:11:09Z")

</div>

I believe the closing brackets are wrong…

Please try this:

```auto
(($reloadedobj = new Expedition($db)) && ($reloadedobj->fetchNoCompute($objectoffield->id) > 0)) ? $reloadedobj->shipping_method: 'not found'

```

---

<div class="post-metadata">

**Author:** ![jh482002](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/j/8e7dd6/32.png) [@jh482002](https://www.dolibarr.org/forum/u/jh482002)\
**Post date:** [July 23, 2024, 11:12am UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547/17 "2024-07-23T11:12:48Z")

</div>

@DG-Rilling  
Thanks

I just tried that. The result was blank.

 ![image](https://www.dolibarr.org/forum/uploads/dolibarrorg/original/2X/0/0cd75746e7965f111b905b0513cb633394114414.png)

Are we looking in the correct place? Where is the Sales Order “Shipping method” saved?

---

<div class="post-metadata">

**Author:** ![jh482002](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/j/8e7dd6/32.png) [@jh482002](https://www.dolibarr.org/forum/u/jh482002)\
**Post date:** [July 23, 2024, 11:28am UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547/18 "2024-07-23T11:28:01Z")

</div>

I think this solution is very close:

$objectoffield-\>shipping\_method\_id

Result:  
 ![image](https://www.dolibarr.org/forum/uploads/dolibarrorg/original/2X/4/4e4cfce394b1fea3f89fa5359cfc6178b27b720e.png)

This appears to result with an **Index #** (5) for the selected “Shipping Method”.

Does anyone know how to change the result from the shipment ID to the **shipment Label**?

---

<div class="post-metadata">

**Author:** ![DG-Rilling](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/d/e495f1/32.png) [@DG-Rilling](https://www.dolibarr.org/forum/u/DG-Rilling)\
**Post date:** [July 23, 2024, 11:53am UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547/19 "2024-07-23T11:53:35Z")

</div>

?I’m confused?  
The label is shown above in the “Shipping method”.  
Why did you need this again in a computed field?

Anyway you can use:

```auto
(($result = $db->query('select description from llx_c_shipment_mode where rowid = " '.$objectoffield->shipping_method_id.'" ')) && $row = $db->fetch_object($result)) ? $row->description : 'not found'

```

---

<div class="post-metadata">

**Author:** ![jh482002](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/j/8e7dd6/32.png) [@jh482002](https://www.dolibarr.org/forum/u/jh482002)\
**Post date:** [July 23, 2024, 1:33pm UTC](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547/20 "2024-07-23T13:33:47Z")

</div>

@DG-Rilling  
Thanks

I just tried that with the following result:

 ![image](https://www.dolibarr.org/forum/uploads/dolibarrorg/original/2X/f/f7f2b4572d2062a3d0c224a3f7cae2685ac12e09.png)

Any more ideas?

[Next page](https://www.dolibarr.org/forum/t/computed-field-shipping-method/25547.md?page=2)
