added ability to create a funding_source_credit. some minor code cleanup
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 12 Feb 2008 18:04:08 +0000 (18:04 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 12 Feb 2008 18:04:08 +0000 (18:04 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/branches/acq-experiment@8734 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/web/oilsweb/oilsweb/controllers/acq/__init__.py
Open-ILS/web/oilsweb/oilsweb/controllers/acq/fund.py
Open-ILS/web/oilsweb/oilsweb/controllers/acq/fund_source.py
Open-ILS/web/oilsweb/oilsweb/controllers/acq/picklist.py
Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/financial/create_fund.html
Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/financial/create_funding_source_credit.html [new file with mode: 0644]
Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/financial/view_fund.html
Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/financial/view_fund_source.html

index 4018f0b..f3aec13 100644 (file)
@@ -47,10 +47,13 @@ class AcqContext(SubContext):
         self.fund_summary = ContextItem()
 
         self.fund_source = ContextItem()
+        self.fund_source_id = ContextItem(cgi_name='acq.fsi')
         self.fund_source_list = ContextItem()
         self.fund_source_name = ContextItem(cgi_name='acq.fsn')
         self.fund_source_currency_type = ContextItem(cgi_name='acq.fsc')
         self.fund_source_owner = ContextItem(cgi_name='acq.fso')
+        self.fund_source_credit_amount = ContextItem(cgi_name='acq.fsca')
+        self.fund_source_credit_note = ContextItem(cgi_name='acq.fscn')
 
 
         self.fund_allocation = ContextItem()
index 5427e70..f007d3e 100644 (file)
@@ -2,8 +2,12 @@ from oilsweb.lib.base import *
 import pylons
 from oilsweb.lib.request import RequestMgr
 import oilsweb.lib.acq.fund, oilsweb.lib.user
-import osrf.net_obj, osrf.ses
-import oils.org, oils.const, oils.event
+import osrf.net_obj
+import oils.const
+from osrf.ses import ClientSession
+from oils.event import Event
+from oils.org import OrgUtil
+
 
 class FundController(BaseController):
 
@@ -11,16 +15,16 @@ class FundController(BaseController):
         ''' Retrieves a fund object with summary and fleshse the org field '''
         fund = ses.request('open-ils.acq.fund.retrieve', 
             r.ctx.core.authtoken, fund_id, {"flesh_summary":1}).recv().content()
-        oils.event.Event.parse_and_raise(fund)
-        fund.org(oils.org.OrgUtil.get_org_unit(fund.org())) # flesh the org
+        Event.parse_and_raise(fund)
+        fund.org(OrgUtil.get_org_unit(fund.org())) # flesh the org
         return fund
 
 
     def view(self, **kwargs):
         r = RequestMgr()
-        r.ctx.core.org_tree = oils.org.OrgUtil.fetch_org_tree()
+        r.ctx.core.org_tree = OrgUtil.fetch_org_tree()
         fund_id = kwargs['id']
-        ses = osrf.ses.ClientSession(oils.const.OILS_APP_ACQ)
+        ses = ClientSession(oils.const.OILS_APP_ACQ)
 
         # grab the fund object
         fund = self._retrieve_fund(r, ses, fund_id)
@@ -29,20 +33,20 @@ class FundController(BaseController):
 
     def list(self):
         r = RequestMgr()
-        ses = osrf.ses.ClientSession(oils.const.OILS_APP_ACQ)
+        ses = ClientSession(oils.const.OILS_APP_ACQ)
         funds = ses.request(
             'open-ils.acq.fund.org.retrieve', 
             r.ctx.core.authtoken, None, {"flesh_summary":1}).recv().content()
-        oils.event.Event.parse_and_raise(funds)
+        Event.parse_and_raise(funds)
         for f in funds:
-            f.org(oils.org.OrgUtil.get_org_unit(f.org()))
+            f.org(OrgUtil.get_org_unit(f.org()))
         r.ctx.acq.fund_list = funds
         return r.render('acq/financial/list_funds.html')
             
 
     def create(self):
         r = RequestMgr()
-        ses = osrf.ses.ClientSession(oils.const.OILS_APP_ACQ)
+        ses = ClientSession(oils.const.OILS_APP_ACQ)
 
         if r.ctx.acq.fund_name: # create then display the fund
 
@@ -54,7 +58,7 @@ class FundController(BaseController):
 
             fund_id = ses.request('open-ils.acq.fund.create', 
                 r.ctx.core.authtoken, fund).recv().content()
-            oils.event.Event.parse_and_raise(fund_id)
+            Event.parse_and_raise(fund_id)
 
             return redirect_to(controller='acq/fund', action='view', id=fund_id)
 
@@ -64,7 +68,7 @@ class FundController(BaseController):
         types = ses.request(
             'open-ils.acq.currency_type.all.retrieve',
             r.ctx.core.authtoken).recv().content()
-        r.ctx.acq.currency_types = oils.event.Event.parse_and_raise(types)
+        r.ctx.acq.currency_types = Event.parse_and_raise(types)
 
 
         if tree is None:
@@ -74,7 +78,7 @@ class FundController(BaseController):
 
     def allocate(self):
         r = RequestMgr()
-        ses = osrf.ses.ClientSession(oils.const.OILS_APP_ACQ)
+        ses = ClientSession(oils.const.OILS_APP_ACQ)
 
         if r.ctx.acq.fund_allocation_source:
             return self._allocate(r, ses)
@@ -84,7 +88,7 @@ class FundController(BaseController):
         source_list = ses.request(
             'open-ils.acq.funding_source.org.retrieve', 
             r.ctx.core.authtoken, None, {'limit_perm':'MANAGE_FUNDING_SOURCE', 'flesh_summary':1}).recv().content()
-        oils.event.Event.parse_and_raise(source_list)
+        Event.parse_and_raise(source_list)
 
         r.ctx.acq.fund = fund
         r.ctx.acq.fund_source_list = source_list
@@ -105,7 +109,7 @@ class FundController(BaseController):
 
         alloc_id = ses.request(
             'open-ils.acq.fund_allocation.create', r.ctx.core.authtoken, alloc).recv().content()
-        oils.event.Event.parse_and_raise(alloc_id)
+        Event.parse_and_raise(alloc_id)
 
         return redirect_to(controller='acq/fund', action='view', id=r.ctx.acq.fund_allocation_fund)
 
index fddbaa6..6c2037d 100644 (file)
@@ -3,38 +3,41 @@ import pylons
 from oilsweb.lib.request import RequestMgr
 import oilsweb.lib.acq.fund
 import osrf.net_obj
-import oils.org, oils.event, oils.const
+import oils.const
+from osrf.ses import ClientSession
+from oils.event import Event
+from oils.org import OrgUtil
 
 
 class FundSourceController(BaseController):
 
     def view(self, **kwargs):
         r = RequestMgr()
-        ses = osrf.ses.ClientSession(oils.const.OILS_APP_ACQ)
-        r.ctx.core.org_tree = oils.org.OrgUtil.fetch_org_tree()
+        ses = ClientSession(oils.const.OILS_APP_ACQ)
+        r.ctx.core.org_tree = OrgUtil.fetch_org_tree()
 
         source = ses.request(
             'open-ils.acq.funding_source.retrieve', 
             r.ctx.core.authtoken, kwargs.get('id'), {"flesh_summary":1}).recv().content()
-        oils.event.Event.parse_and_raise(source)
+        Event.parse_and_raise(source)
 
-        source.owner(oils.org.OrgUtil.get_org_unit(source.owner())) # flesh the owner
+        source.owner(OrgUtil.get_org_unit(source.owner())) # flesh the owner
         r.ctx.acq.fund_source = source
         return r.render('acq/financial/view_fund_source.html')
 
     def list(self):
         r = RequestMgr()
-        ses = osrf.ses.ClientSession(oils.const.OILS_APP_ACQ)
+        ses = ClientSession(oils.const.OILS_APP_ACQ)
 
         sources = ses.request(
             'open-ils.acq.funding_source.org.retrieve', 
             r.ctx.core.authtoken, None, {"flesh_summary":1}).recv().content()
 
-        oils.event.Event.parse_and_raise(sources)
+        Event.parse_and_raise(sources)
         r.ctx.acq.fund_source_list = sources
 
         for source in sources:
-            source.owner(oils.org.OrgUtil.get_org_unit(source.owner()))
+            source.owner(OrgUtil.get_org_unit(source.owner()))
         return r.render('acq/financial/list_fund_sources.html')
             
 
@@ -50,7 +53,7 @@ class FundSourceController(BaseController):
             source_id = fund_mgr.create_fund_source(source)
             return redirect_to(controller='acq/fund_source', action='view', id=source_id)
 
-        perm_orgs = osrf.ses.ClientSession.atomic_request(
+        perm_orgs = ClientSession.atomic_request(
             'open-ils.actor',
             'open-ils.actor.user.work_perm.highest_org_set',
             r.ctx.core.authtoken, 'CREATE_FUNDING_SOURCE');
@@ -58,10 +61,33 @@ class FundSourceController(BaseController):
         if len(perm_orgs) == 0:
             return _("Insufficient Permissions") # XXX Return a perm failure template
 
-        r.ctx.core.perm_tree['CREATE_FUNDING_SOURCE'] = oils.org.OrgUtil.get_union_tree(perm_orgs)
+        r.ctx.core.perm_tree['CREATE_FUNDING_SOURCE'] = OrgUtil.get_union_tree(perm_orgs)
         r.ctx.core.high_perm_orgs['CREATE_FUNDING_SOURCE'] = perm_orgs
         r.ctx.acq.currency_types = fund_mgr.fetch_currency_types()
         return r.render('acq/financial/create_fund_source.html')
 
 
+    def create_credit(self):
+        r = RequestMgr()
+        ses = ClientSession(oils.const.OILS_APP_ACQ)
+
+        if r.ctx.acq.fund_source_credit_amount:
+
+            credit = osrf.net_obj.NetworkObject.acqfscred()
+            credit.funding_source(r.ctx.acq.fund_source_id)
+            credit.amount(r.ctx.acq.fund_source_credit_amount)
+            credit.note(r.ctx.acq.fund_source_credit_note)
+
+            status = ses.request(
+                'open-ils.acq.funding_source_credit.create',
+                r.ctx.core.authtoken, credit).recv().content()
+            status = Event.parse_and_raise(status)
+            return redirect_to(controller='acq/fund_source', action='view', id=r.ctx.acq.fund_source_id)
+
+        source = ses.request('open-ils.acq.funding_source.retrieve',
+            r.ctx.core.authtoken, r.ctx.acq.fund_source_id, {"flesh_summary":1}).recv().content()
+        r.ctx.acq.fund_source = Event.parse_and_raise(source)
+        source.owner(OrgUtil.get_org_unit(source.owner()))
+        return r.render('acq/financial/create_funding_source_credit.html')
 
+        
index 9e880ea..bc80055 100644 (file)
@@ -3,8 +3,11 @@ from oilsweb.lib.request import RequestMgr
 import logging, pylons
 import oilsweb.lib.context, oilsweb.lib.util
 import oilsweb.lib.bib, oilsweb.lib.acq.search, oilsweb.lib.acq.picklist
-import osrf.cache, osrf.json, osrf.ses
-import oils.const, oils.utils.utils, oils.event
+import oils.const, oils.utils.utils
+from osrf.ses import ClientSession
+from oils.event import Event
+from oils.org import OrgUtil
+
 
 
 class PicklistController(BaseController):
@@ -24,10 +27,10 @@ class PicklistController(BaseController):
             picklist = osrf.net_obj.NetworkObject.acqpl()
             picklist.name(r.ctx.acq.picklist_name)
             picklist.owner(r.ctx.core.user.id())
-            picklist_id = osrf.ses.ClientSession.atomic_request(
+            picklist_id = ClientSession.atomic_request(
                 oils.const.OILS_APP_ACQ,
                 'open-ils.acq.picklist.create', r.ctx.core.authtoken, picklist)
-            oils.event.Event.parse_and_raise(picklist_id)
+            Event.parse_and_raise(picklist_id)
             return redirect_to(controller='acq/picklist', action='view', id=picklist_id)
         return r.render('acq/picklist/create.html')
 
@@ -87,14 +90,16 @@ class PicklistController(BaseController):
 
     def update(self):
         r = RequestMgr()
-        ses = osrf.ses.ClientSession(oils.const.OILS_APP_ACQ)
+        ses = ClientSession(oils.const.OILS_APP_ACQ)
         ses.connect()
 
+        page = redirect_to(controller='acq/picklist', action='list')
+
         if r.ctx.acq.picklist_action == 'move_selected':
-            self._move_selected(r, ses)
+            page = self._move_selected(r, ses)
 
         ses.disconnect()
-        return redirect_to(controller='acq/picklist', action='list')
+        return page
 
     def _move_selected(self, r, ses):
         ''' Moves the selected picklist entry's to the destination picklist '''
@@ -103,13 +108,15 @@ class PicklistController(BaseController):
             entry = ses.request(
                 'open-ils.acq.picklist_entry.retrieve',
                 r.ctx.core.authtoken, entry_id).recv().content()
-            entry = oils.event.Event.parse_and_raise(entry)
+            entry = Event.parse_and_raise(entry)
 
             entry.picklist(r.ctx.acq.picklist_dest_id)
 
             status = ses.request(
                 'open-ils.acq.picklist_entry.update',
                 r.ctx.core.authtoken, entry).recv().content()
-            oils.event.Event.parse_and_raise(status)
+            Event.parse_and_raise(status)
+
+        return redirect_to(controller='acq/picklist', action='view', id=r.ctx.acq.picklist_dest_id)
 
 
index 065fe6e..d6d0a22 100644 (file)
@@ -36,7 +36,7 @@
             <tr>
                 <td class='oils-admin-label'>${_('Fund Year')}</td>
                 <td> 
-                    <input type='text' size='42' year='${c.oils.acq.fund_year_.cgi_name}'/>
+                    <input type='text' size='42' name='${c.oils.acq.fund_year_.cgi_name}'/>
                 </td>
             </tr>
 
diff --git a/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/financial/create_funding_source_credit.html b/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/financial/create_funding_source_credit.html
new file mode 100644 (file)
index 0000000..7a7549b
--- /dev/null
@@ -0,0 +1,41 @@
+# -*- coding: utf-8 -*-
+<!-- 
+ vim:ft=mako: 
+-->
+<%inherit file='../base.html'/>
+<%namespace file='../../common/widgets.html' name='widget'/>
+<%def name="page_title()">${_('Create Funding Source Credit')}</%def>
+<%def name="block_content()">
+
+<% source = c.oils.acq.fund_source %>
+
+<form action='${c.oils.acq.prefix}/fund_source/create_credit' method='POST'>
+    <input type='hidden' name='${c.oils.acq.fund_source_id_.cgi_name}' value='${source.id()}'/>
+    <table class='oils-admin-table'>
+        <tbody>
+            <tr>
+                <td class='oils-admin-label'>${_('Funding Source')}</td>
+                <% 
+                    label = _('%(name)s (%(owner)s)') % {'name':source.name(), 'owner':source.owner().shortname()}
+                %>
+                <td>${label}</td>
+            </tr>
+            <tr>
+                <td class='oils-admin-label'>${_('Amount')}</td>
+                <td><input type='text' size='8' name='${c.oils.acq.fund_source_credit_amount_.cgi_name}'/></td>
+            </tr>
+            <tr>
+                <td class='oils-admin-label'>${_('Note')}</td>
+                <td> 
+                    <textarea name='${c.oils.acq.fund_source_credit_note_.cgi_name}'> </textarea>
+                </td>
+            </tr>
+            <tr>
+                <td colspan='2'>
+                    <input type='submit' value='${_("Create Funding Source Credit")}'/>
+                </td>
+            </tr>
+        </tbody>
+    </table>
+</form>
+</%def>
index 3e39a04..96d2085 100644 (file)
@@ -3,13 +3,17 @@
 <%namespace file='../../common/widgets.html' name='widget'/>
 <%def name="page_title()">${_('View Fund')}</%def>
 <%def name="block_content()">
+
+<div id='oils-acq-list-header' class='container'>
+    <div id='oils-acq-list-header-label'>${c.oils.acq.fund.name()}</div>
+    <div id='oils-acq-list-header-create'>
+        <a href='${c.oils.acq.prefix}/fund/allocate?${c.oils.acq.fund_id_.cgi_name}=${c.oils.acq.fund.id()}'>${_('Allocate Money')}</a>
+    </div>
+</div>
+
 <table class='oils-admin-table'>
     <tbody>
         <tr>
-            <td class='oils-admin-label'>${_('Name')}</td>
-            <td>${c.oils.acq.fund.name()}</td>
-        </tr>
-        <tr>
             <td class='oils-admin-label'>${_('Owner')}</td>
             <td>${c.oils.acq.fund.org().name()}</td> 
         </tr>
@@ -47,7 +51,4 @@
         </tr>
     </tbody>
 </table>
-<div>
-    <a href='${c.oils.acq.prefix}/fund/allocate?${c.oils.acq.fund_id_.cgi_name}=${c.oils.acq.fund.id()}'>${_('Allocate Money')}</a>
-</div>
 </%def>
index 29e3b54..d2575fb 100644 (file)
@@ -3,31 +3,37 @@
 <%namespace file='../../common/widgets.html' name='widget'/>
 <%def name="page_title()">${_('View Funding Source')}</%def>
 <%def name="block_content()">
+
+<% source = c.oils.acq.fund_source %>
+
+<div id='oils-acq-list-header' class='container'>
+    <div id='oils-acq-list-header-label'>${source.name()}</div>
+    <div id='oils-acq-list-header-create'>
+        <a href='${c.oils.acq.prefix}/fund_source/create_credit?${c.oils.acq.fund_source_id_.cgi_name}=${source.id()}'>${_('Add Credit')}</a>
+    </div>
+</div>
+
 <table class='oils-admin-table'>
     <tbody>
         <tr>
-            <td class='oils-admin-label'>${_('Funding Source Name')}</td>
-            <td>${c.oils.acq.fund_source.name()}</td>
-        </tr>
-        <tr>
             <td class='oils-admin-label'>${_('Funding Source Owner')}</td>
-            <td>${c.oils.acq.fund_source.owner().name()}</td> 
+            <td>${source.owner().name()}</td> 
         </tr>
         <tr>
             <td class='oils-admin-label'>${_('Funding Source Currency Type')}</td>
-            <td>${c.oils.acq.fund_source.currency_type()}</td> 
+            <td>${source.currency_type()}</td> 
         </tr>
         <tr>
             <td class='oils-admin-label'>${_('Funding Source Credit Total')}</td>
-            <td>${c.oils.acq.fund_source.summary()['credit_total']}</td> 
+            <td>${source.summary()['credit_total']}</td> 
         </tr>
         <tr>
             <td class='oils-admin-label'>${_('Funding Source Allocation Total')}</td>
-            <td>${c.oils.acq.fund_source.summary()['allocation_total']}</td> 
+            <td>${source.summary()['allocation_total']}</td> 
         </tr>
         <tr>
             <td class='oils-admin-label'>${_('Funding Source Balance')}</td>
-            <td>${c.oils.acq.fund_source.summary()['balance']}</td> 
+            <td>${source.summary()['balance']}</td> 
         </tr>
     </tbody>
 </table>