diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php
index e184a99b43e..0f84fdd5552 100644
--- a/htdocs/comm/propal/card.php
+++ b/htdocs/comm/propal/card.php
@@ -121,6 +121,7 @@ $usercancreateorder = $user->rights->commande->creer;
$usercancreateinvoice = $user->rights->facture->creer;
$usercancreatecontract = $user->rights->contrat->creer;
$usercancreateintervention = $user->rights->ficheinter->creer;
+$usercancreatepurchaseorder = $user->rights->fournisseur->commande->creer;
$permissionnote = $usercancreate; // Used by the include of actions_setnotes.inc.php
$permissiondellink = $usercancreate; // Used by the include of actions_dellink.inc.php
@@ -2499,13 +2500,23 @@ if ($action == 'create')
print '' . $langs->trans('SendMail') . '';
}
- // Create an order
+ // Create a sale order
if (! empty($conf->commande->enabled) && $object->statut == Propal::STATUS_SIGNED) {
if ($usercancreateorder) {
print '' . $langs->trans("AddOrder") . '';
}
}
+ // Create a purchase order
+ if (! empty($conf->global->WORKFLOW_CAN_CREATE_PURCHASE_ORDER_FROM_PROPOSAL))
+ {
+ if (! empty($conf->fournisseur->enabled) && $object->statut == Propal::STATUS_SIGNED) {
+ if ($usercancreatepurchaseorder) {
+ print '' . $langs->trans("AddPurchaseOrder") . '';
+ }
+ }
+ }
+
// Create an intervention
if (! empty($conf->service->enabled) && ! empty($conf->ficheinter->enabled) && $object->statut == Propal::STATUS_SIGNED) {
if ($usercancreateintervention) {
diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php
index 3854c51e29d..e645bf3cee6 100644
--- a/htdocs/commande/card.php
+++ b/htdocs/commande/card.php
@@ -106,6 +106,8 @@ $usercanvalidate = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancr
$usercancancel = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancreate) || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->order_advance->annuler)));
$usercansend = (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->commande->order_advance->send);
+$usercancreatepurchaseorder = $user->rights->fournisseur->commande->creer;
+
$permissionnote = $usercancreate; // Used by the include of actions_setnotes.inc.php
$permissiondellink = $usercancreate; // Used by the include of actions_dellink.inc.php
$permissionedit = $usercancreate; // Used by the include of actions_lineupdown.inc.php
@@ -2566,6 +2568,16 @@ if ($action == 'create' && $usercancreate)
print '' . $langs->trans("AddAction") . '';
}*/
+ // Create a purchase order
+ if (! empty($conf->global->WORKFLOW_CAN_CREATE_PURCHASE_ORDER_FROM_SALE_ORDER))
+ {
+ if (! empty($conf->fournisseur->enabled) && $object->statut > Commande::STATUS_DRAFT && $object->statut < Commande::STATUS_CLOSED && $object->getNbOfServicesLines() > 0) {
+ if ($usercancreatepurchaseorder) {
+ print '' . $langs->trans("AddPurchaseOrder") . '';
+ }
+ }
+ }
+
// Create intervention
if ($conf->ficheinter->enabled) {
$langs->load("interventions");
diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php
index 77d8d1c119a..1d8f385fd05 100644
--- a/htdocs/fourn/commande/card.php
+++ b/htdocs/fourn/commande/card.php
@@ -1106,12 +1106,19 @@ if (empty($reshook))
// If creation from another object of another module (Example: origin=propal, originid=1)
if (! empty($origin) && ! empty($originid))
{
- if ($origin == 'order' || $origin == 'commande')
+ if ($origin == 'propal' || $origin == 'proposal')
{
+ $classname = 'Propal';
+ $element = 'comm/propal'; $subelement = 'propal';
+ }
+ elseif ($origin == 'order' || $origin == 'commande')
+ {
+ $classname = 'Commande';
$element = $subelement = 'commande';
}
else
{
+ $classname = 'SupplierProposal';
$element = 'supplier_proposal';
$subelement = 'supplier_proposal';
}
@@ -1131,7 +1138,6 @@ if (empty($reshook))
{
dol_include_once('/' . $element . '/class/' . $subelement . '.class.php');
- $classname = 'SupplierProposal';
$srcobject = new $classname($db);
dol_syslog("Try to find source object origin=" . $object->origin . " originid=" . $object->origin_id . " to add lines");
@@ -1167,7 +1173,6 @@ if (empty($reshook))
// Extrafields
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && method_exists($lines[$i], 'fetch_optionals')) // For avoid conflicts if
- // trigger used
{
$lines[$i]->fetch_optionals($lines[$i]->rowid);
$array_option = $lines[$i]->array_options;
@@ -1442,7 +1447,7 @@ llxHeader('', $langs->trans("Order"), $help_url);
$now=dol_now();
if ($action=='create')
{
- print load_fiche_titre($langs->trans('NewOrder'));
+ print load_fiche_titre($langs->trans('NewOrderSupplier'));
dol_htmloutput_events();
@@ -1459,17 +1464,31 @@ if ($action=='create')
{
// Parse element/subelement (ex: project_task)
$element = $subelement = $origin;
+ $regs=array();
if (preg_match('/^([^_]+)_([^_]+)/i', $origin, $regs)) {
- $element = $regs [1];
- $subelement = $regs [2];
+ $element = $regs[1];
+ $subelement = $regs[2];
}
- $element = 'supplier_proposal';
- $subelement = 'supplier_proposal';
+ if ($origin == 'propal' || $origin == 'proposal')
+ {
+ $classname = 'Propal';
+ $element = 'comm/propal'; $subelement = 'propal';
+ }
+ elseif ($origin == 'order' || $origin == 'commande')
+ {
+ $classname = 'Commande';
+ $element = $subelement = 'commande';
+ }
+ else
+ {
+ $classname = 'SupplierProposal';
+ $element = 'supplier_proposal';
+ $subelement = 'supplier_proposal';
+ }
dol_include_once('/' . $element . '/class/' . $subelement . '.class.php');
- $classname = 'SupplierProposal';
$objectsrc = new $classname($db);
$objectsrc->fetch($originid);
if (empty($objectsrc->lines) && method_exists($objectsrc, 'fetch_lines'))
diff --git a/htdocs/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang
index a010a64b907..3d22b338166 100644
--- a/htdocs/langs/en_US/orders.lang
+++ b/htdocs/langs/en_US/orders.lang
@@ -11,6 +11,7 @@ OrderDate=Order date
OrderDateShort=Order date
OrderToProcess=Order to process
NewOrder=New order
+NewOrderSupplier=New Purchase Order
ToOrder=Make order
MakeOrder=Make order
SupplierOrder=Purchase order
@@ -70,6 +71,7 @@ DeleteOrder=Delete order
CancelOrder=Cancel order
OrderReopened= Order %s Reopened
AddOrder=Create order
+AddPurchaseOrder=Create purchase order
AddToDraftOrders=Add to draft order
ShowOrder=Show order
OrdersOpened=Orders to process