From 8114249fca4016855ecbf65cd4fb5a5cd2dfc92c Mon Sep 17 00:00:00 2001 From: simnandez Date: Tue, 12 Mar 2013 15:06:38 +0100 Subject: [PATCH] [ task #652 ] Reduce clicks into creaton of orders, invoices, etc. Supplier order --- htdocs/core/menus/standard/eldy.lib.php | 2 +- .../class/fournisseur.commande.class.php | 8 +- htdocs/fourn/commande/fiche.php | 118 ++++++++++++++---- htdocs/langs/ca_ES/admin.lang | 1 + htdocs/langs/es_ES/admin.lang | 1 + 5 files changed, 106 insertions(+), 24 deletions(-) diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index a4dd6bbab9c..d333e2cc6d7 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -650,7 +650,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu { $langs->load("orders"); $newmenu->add("/fourn/commande/index.php?leftmenu=orders_suppliers",$langs->trans("SuppliersOrders"), 0, $user->rights->fournisseur->commande->lire, '', $mainmenu, 'orders_suppliers'); - $newmenu->add("/societe/societe.php?leftmenu=orders_suppliers", $langs->trans("NewOrder"), 1, $user->rights->fournisseur->commande->creer); + $newmenu->add("/fourn/commande/fiche.php?action=create", $langs->trans("NewOrder"), 1, $user->rights->fournisseur->commande->creer); $newmenu->add("/fourn/commande/liste.php?leftmenu=orders_suppliers", $langs->trans("List"), 1, $user->rights->fournisseur->commande->lire); $newmenu->add("/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier", $langs->trans("Statistics"), 1, $user->rights->fournisseur->commande->lire); } diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 97d20d54d48..b74511f1419 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -3,7 +3,7 @@ * Copyright (C) 2004-2012 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2007 Franky Van Liedekerke - * Copyright (C) 2010-2011 Juanjo Menent + * Copyright (C) 2010-2013 Juanjo Menent * Copyright (C) 2010-2012 Philippe Grand * Copyright (C) 2012 Marcos García * @@ -926,6 +926,9 @@ class CommandeFournisseur extends CommonOrder $sql = "INSERT INTO ".MAIN_DB_PREFIX."commande_fournisseur ("; $sql.= "ref"; + $sql.= ", ref_supplier"; + $sql.= ", note"; + $sql.= ", note_public"; $sql.= ", entity"; $sql.= ", fk_soc"; $sql.= ", date_creation"; @@ -938,6 +941,9 @@ class CommandeFournisseur extends CommonOrder $sql.= ") "; $sql.= " VALUES ("; $sql.= "''"; + $sql.= ", '".$this->ref_supplier."'"; + $sql.= ", '".$this->note."'"; + $sql.= ", '".$this->note_public."'"; $sql.= ", ".$conf->entity; $sql.= ", ".$this->socid; $sql.= ", ".$this->db->idate($now); diff --git a/htdocs/fourn/commande/fiche.php b/htdocs/fourn/commande/fiche.php index 1afb3fddb00..4baa7ac50f5 100644 --- a/htdocs/fourn/commande/fiche.php +++ b/htdocs/fourn/commande/fiche.php @@ -3,7 +3,7 @@ * Copyright (C) 2004-2012 Laurent Destailleur * Copyright (C) 2005 Eric Seigne * Copyright (C) 2005-2012 Regis Houssin - * Copyright (C) 2010-2012 Juanjo Menent + * Copyright (C) 2010-2013 Juanjo Menent * Copyright (C) 2011 Philippe Grand * Copyright (C) 2012 Marcos García * @@ -82,7 +82,7 @@ if ($id > 0 || ! empty($ref)) $ret = $object->fetch_thirdparty(); if ($ret < 0) dol_print_error($db,$object->error); } -else if (! empty($socid)) +else if (! empty($socid) && $socid > 0) { $fourn = new Fournisseur($db); $ret=$fourn->fetch($socid); @@ -657,33 +657,47 @@ else if ($action == 'remove_file' && $object->id > 0 && $user->rights->fournisse /* * Create an order */ -else if ($action == 'create' && ! empty($object->socid) && $user->rights->fournisseur->commande->creer) +else if ($action == 'add' && $user->rights->fournisseur->commande->creer) { - $error=0; + $error=0; - $db->begin(); - - $id=$object->create($user); - if (! $id > 0) + if ($socid <1) { - $error++; - setEventMessage($object->error, 'errors'); + $mesg='
'.$langs->trans('ErrorFieldRequired',$langs->transnoentities('Supplier')).'
'; + $action='create'; + $error++; } if (! $error) { - if ($comclientid != '') + $db->begin(); + + // Creation commande + $object->ref_supplier = GETPOST('refsupplier'); + $object->socid = $socid; + $object->note = GETPOST('note'); + $object->note_public = GETPOST('note_public'); + + $id = $object->create($user); + if ($id < 0) + { + $error++; + } + + if ($error) { - $object->updateFromCommandeClient($user, $id, $comclientid); + $langs->load("errors"); + $db->rollback(); + $mesg='
'.$langs->trans($object->error).'
'; + $action='create'; + $_GET['socid']=$_POST['socid']; + } + else + { + $db->commit(); + header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); + exit; } - - $ret=$object->fetch($id); // Reload to get new records - - $db->commit(); - } - else - { - $db->rollback(); } } @@ -942,8 +956,68 @@ $productstatic = new Product($db); /* *************************************************************************** */ $now=dol_now(); - -if (! empty($object->id)) +if ($action=="create") +{ + print_fiche_titre($langs->trans('NewOrder')); + + dol_htmloutput_mesg($mesg); + + $societe=''; + if ($socid>0) + { + $societe=new Societe($db); + $societe->fetch($socid); + } + + print '
'; + print ''; + print ''; + print ''; + + // Ref + print ''; + + // Third party + print ''; + print ''; + + // Ref supplier + print ''; + print ''; + + print ''; + + print ''; + print ''; + print ''; + + print ''; + print ''; + print ''; + + // Other options + $parameters=array(); + $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook + + // Bouton "Create Draft" + print "
'.$langs->trans('Ref').''.$langs->trans('Draft').'
'.$langs->trans('Supplier').''; + + if ($socid > 0) + { + print $societe->getNomUrl(1); + print ''; + } + else + { + print $form->select_company((empty($socid)?'':$socid),'socid','s.fournisseur = 1',1); + } + print '
'.$langs->trans('RefSupplier').'
'.$langs->trans('Note').'
'.$langs->trans('NotePublic').'
\n"; + + print '
'; + + print "
\n"; +} +elseif (! empty($object->id)) { $author = new User($db); $author->fetch($object->user_author_id); diff --git a/htdocs/langs/ca_ES/admin.lang b/htdocs/langs/ca_ES/admin.lang index adbce991781..70af2933354 100644 --- a/htdocs/langs/ca_ES/admin.lang +++ b/htdocs/langs/ca_ES/admin.lang @@ -937,6 +937,7 @@ ExtraFieldsThirdParties=Atributs adicionals (tercers) ExtraFieldsContacts=Atributs adicionals (contactes/adreçes) ExtraFieldsMember=Atributs complementaris (membres) ExtraFieldsMemberType=Atributs complementaris (tipus de membres) +ExtraFieldsCustomerInvoices=Atributs complementaris (factures a clients) ExtraFieldHasWrongValue=L'atribut %s te un valor incorrecte. AlphaNumOnlyCharsAndNoSpace=només carateres alfanumèrics sense espais SendingMailSetup=Configuració de l'enviament per mail diff --git a/htdocs/langs/es_ES/admin.lang b/htdocs/langs/es_ES/admin.lang index 587ba2d3679..42d01cae8d9 100644 --- a/htdocs/langs/es_ES/admin.lang +++ b/htdocs/langs/es_ES/admin.lang @@ -938,6 +938,7 @@ ExtraFieldsThirdParties=Atributos adicionales (terceros) ExtraFieldsContacts=Atributos adicionales (contactos/direcciones) ExtraFieldsMember=Atributos complementarios (miembros) ExtraFieldsMemberType=Atributos complementarios (tipos de miembros) +ExtraFieldsCustomerInvoices=Atributos complementarios (facturas a clientes) ExtraFieldHasWrongValue=El atributo %s tiene un valor incorrecto. AlphaNumOnlyCharsAndNoSpace=solamente caracteres alfanuméricos sin espacios SendingMailSetup=Configuración del envío por mail