From: djfiander Date: Thu, 28 Feb 2008 00:37:59 +0000 (+0000) Subject: Initial support for creating POs from picklists and for deleting POs. This doesn... X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=d1b0e8bc5d9515b6d0fcf6a64f7d9f957a6b85f8;p=Evergreen.git Initial support for creating POs from picklists and for deleting POs. This doesn't quite work yet. git-svn-id: svn://svn.open-ils.org/ILS/branches/acq-experiment@8839 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/web/oilsweb/oilsweb/controllers/acq/__init__.py b/Open-ILS/web/oilsweb/oilsweb/controllers/acq/__init__.py index e942037796..38f6344605 100644 --- a/Open-ILS/web/oilsweb/oilsweb/controllers/acq/__init__.py +++ b/Open-ILS/web/oilsweb/oilsweb/controllers/acq/__init__.py @@ -39,7 +39,7 @@ class AcqContext(SubContext): self.fund = ContextItem() self.fund_id = ContextItem(cgi_name='acq.fi') - self.fund_list = ContextItem() + self.fund_list = ContextItem(cgi_name='acq.fl') self.fund_name = ContextItem(cgi_name='acq.fn') self.fund_year = ContextItem(cgi_name='acq.fc') self.fund_org = ContextItem(cgi_name='acq.fo') @@ -64,7 +64,7 @@ class AcqContext(SubContext): self.fund_allocation_note = ContextItem(cgi_name='acq.fan') self.provider = ContextItem() - self.provider_id = ContextItem() + self.provider_id = ContextItem(cgi_name='acq.proid') self.provider_list = ContextItem() self.provider_name = ContextItem(cgi_name='acq.pn') self.provider_currency_type = ContextItem(cgi_name='acq.pct') diff --git a/Open-ILS/web/oilsweb/oilsweb/controllers/acq/po.py b/Open-ILS/web/oilsweb/oilsweb/controllers/acq/po.py index bc3ff8bfda..ec64558d9c 100644 --- a/Open-ILS/web/oilsweb/oilsweb/controllers/acq/po.py +++ b/Open-ILS/web/oilsweb/oilsweb/controllers/acq/po.py @@ -1,6 +1,6 @@ from oilsweb.lib.base import * from oilsweb.lib.request import RequestMgr -from oilsweb.lib.acq import provider_mgr; +from oilsweb.lib.acq import provider_mgr import oilsweb.lib.user import osrf.net_obj import oils.const @@ -9,10 +9,8 @@ from oils.event import Event from oils.org import OrgUtil import mx.DateTime.ISO import oilsweb.lib.acq.po_manager - -# open-ils.acq.purchase_order.retrieve "2f9697131c80e49fb9f2515781102f6a", -# 8, {"flesh_lineitems":1,"clear_marc":1} - +from oilsweb.lib.acq.picklist import PicklistMgr +from oilsweb.lib.acq.fund import FundMgr class PoController(BaseController): @@ -38,6 +36,48 @@ class PoController(BaseController): r.ctx.acq.provider.value = provider_mgr.retrieve(r, po_mgr.po.provider()) return r.render('acq/po/view_po.html') + # Create PO from contents of picklist + def create(self, **kwargs): + r = RequestMgr() + if not r.ctx.acq.picklist_source_id.value: + plmgr = PicklistMgr(r, + picklist_id=r.ctx.acq.picklist_source_id.value) + r.ctx.acq.picklist_list.value = plmgr.retrieve_list(r) + + r.ctx.acq.fund_list.value = FundMgr(r).retrieve_org_funds() + provider_list = provider_mgr.list(r) + for p in provider_list: + p.owner(OrgUtil.get_org_unit(p.owner())) + r.ctx.acq.provider_list.value = provider_list + return r.render('acq/po/create.html') + + po = osrf.net_obj.NetworkObject.acqpo() + po.owner(r.ctx.core.user.value.id()) + po.provider(r.ctx.acq.provider_id.value) + po.default_fund(r.ctx.acq.fund_id.value) + + po_id = ClientSession.atomic_request(oils.const.OILS_APP_ACQ, + 'open-ils.acq.purchase_order.create', + r.ctx.core.authtoken.value, po) + Event.parse_and_raise(po_id) + + plmgr = oilsweb.lib.acq.picklist.PicklistMgr(r, picklist_id=r.ctx.acq.picklist_source_id.value) + + plmgr.retrieve() + plmgr.retrieve_entries(idlist=1) + + for pl_item in plmgr.picklist.entries(): + po_lineitem = osrf.net_obj.NetworkObject.acqpoli() + po_lineitem.purchase_order(po_id) + po_lineitem_id = ClientSession.atomic_request(oils.const.OILS_APP_ACQ, + 'open-ils.acq.po_lineitem.create', + r.ctx.core.authtoken.value, + po_lineitem, + { 'picklist_entry': pl_item}) + Event.parse_and_raise(po_lineitem_id) + + return redirect_to(controller='acq/po', action='view', id=po_id) + # Render individual line item: list of detail info def view_lineitem(self, **kwargs): r = RequestMgr() @@ -59,3 +99,10 @@ class PoController(BaseController): r.ctx.acq.po.value = po_mgr.po return r.render('acq/po/view_lineitem.html') + + def delete(self, **kwargs): + r = RequestMgr() + ClientSession.atomic_request(oils.const.OILS_APP_ACQ, + 'open-ils.acq.purchase_order.delete', + r.ctx.core.authtoken.value, kwargs['id']) + return r.render('acq/po/list') diff --git a/Open-ILS/web/oilsweb/oilsweb/lib/acq/picklist.py b/Open-ILS/web/oilsweb/oilsweb/lib/acq/picklist.py index 05a0c80bf2..2dc353990a 100644 --- a/Open-ILS/web/oilsweb/oilsweb/lib/acq/picklist.py +++ b/Open-ILS/web/oilsweb/oilsweb/lib/acq/picklist.py @@ -13,7 +13,7 @@ class PicklistMgr(object): def retrieve(self): picklist = self.ses.request( 'open-ils.acq.picklist.retrieve', - self.request_mgr.ctx.core.authtoken.value, self.id, {'flesh_entry_count':1}).recv().content() + self.request_mgr.ctx.core.authtoken.value, self.id, {'flesh_entry_count':1, 'flesh_username':1}).recv().content() oils.event.Event.parse_and_raise(picklist) self.picklist = picklist @@ -54,6 +54,7 @@ class PicklistMgr(object): { "offset" : kwargs.get('offset'), "limit" : kwargs.get('limit'), + "idlist" : kwargs.get('idlist'), "flesh" : 1, "clear_marc" : 1 } diff --git a/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/po/create.html b/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/po/create.html new file mode 100644 index 0000000000..afa3a3d43b --- /dev/null +++ b/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/po/create.html @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- + +<%inherit file='../base.html'/> +<%def name="page_title()">${_('Create Purchase Order')} +<%def name="block_content()"> +
+ + + + +
+