return $stat unless $stat == Apache2::Const::OK;
return Apache2::Const::DECLINED unless $template;
- $template = $ctx->{skin} . "/$template";
-
my $text_handler = set_text_handler($ctx, $r);
my $tt = Template->new({
my $r = shift;
my $base = shift;
my $ctx = shift;
- my $skin = $ctx->{skin};
my $path = $r->uri;
- $path =~ s/$base//og;
+ $path =~ s/$base\/?//og;
my @parts = split('/', $path);
my $template = '';
my $page_args = [];
while(@parts) {
last unless $localpath;
for my $tpath (@{$ctx->{template_paths}}) {
- my $fpath = "$tpath/$skin/$localpath.$ext";
+ my $fpath = "$tpath/$localpath.$ext";
$r->log->debug("egweb: looking at possible template $fpath");
if(-r $fpath) {
$template = "$localpath.$ext";
--- /dev/null
+<div style="width: 300px; height: 300px; overflow: auto;">
+ <script
+ src="[% ctx.media_prefix %]/js/ui/default/acq/common/claim_dialog.js">
+ </script>
+ <div><big>Claims</big></div>
+ <div>Against item:
+ <span id="acq-lit-li-claim-dia-li-title"></span>
+ (<span id="acq-lit-li-claim-dia-li-id"></span>)
+ </div>
+ <div id="acq-lit-li-claim-dia-show" class="hidden">
+ <ul id="acq-lit-li-claim-dia-lid-list">
+ <li name="lid">
+ <span name="barcode"></span> /
+ <span name="recvd"></span>
+ <ul name="claims">
+ <li name="claim">
+ <span name="type"></span>
+ <a name="voucher"
+ href="javascript:void(0);">Show Voucher</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <hr />
+ </div>
+ <div id="acq-lit-li-claim-dia-initiate" class="hidden">
+ <div><big>Initiate New Claims</big></div>
+ <div id="acq-lit-li-claim-dia-lid-list-init">
+ <div name="lid_to_claim">
+ <input type="checkbox" name="claimable_lid" />
+ <label name="claimable_lid_label">
+ <span name="barcode"></span> /
+ <span name="recvd"></span>
+ </label>
+ </div>
+ </div>
+ <hr />
+ <div id="acqclet-display" class="hidden">
+ <div><big>Select Claim Action</big></div>
+ <table>
+ <tbody id="acqclet-tbody">
+ <tr name="acqclet-template">
+ <td>
+ <input type="checkbox" name="acqclet-checkbox" />
+ </td>
+ <td style="padding-left: 1em;">
+ <label name="acqclet-label">
+ (${ou}) ${code} <em>${description}</em>
+ <span style="color: #069;">
+ ${library_initiated}</span>
+ </label>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <hr />
+ </div>
+ <button id="acq-lit-li-claim-dia-claim">Claim selected</button>
+ </div>
+</div>
--- /dev/null
+<div id="acq-eligible-claim-controls">
+ <label for="acq-eligible-claim-type">Claim type:</label>
+ <span id="acq-eligible-claim-type"></span>
+ <label for="acq-eligible-claim-note">Note:</label>
+ <input dojoType="dijit.form.TextBox" id="acq-eligible-claim-note" />
+ <button id="acq-eligible-claim-submit">Claim</button>
+</div>
+
--- /dev/null
+[% which_lc = which | lower %]
+ <div id="acq-[% which_lc %]-info-div" class="hidden">
+ <div class="acq-menu-bar">
+ <div dojoType="dijit.form.Button" id="acq-[% which_lc %]-info-back-button">↖ [% IF which == "Lit" %]Return[% ELSE %]Hide[% END %]</div>
+ </div>
+ <table>
+ <tbody id="acq-[% which_lc %]-info-tbody">
+ <tr id="acq-[% which_lc %]-info-row"><td name="label"/><td name="value"/></tr>
+ </tbody>
+ </table>
+[% IF which == "Lit" %]
+ <div class="hidden" id="acq-[% which_lc %]-info-related">
+ Show the <a name="rel_link" href="#"><span name="related_number"></span> lineitem(s)</a> related to the same bibliographic record.
+ </div>
+ <div style="margin-top:40px;">
+ <h3 id="acq-[% which_lc %]-marc-order-record-label">MARC Order Record</h3>
+ <h3 id="acq-[% which_lc %]-marc-real-record-label">MARC ILS Record</h3>
+ <div>
+ <div dojoType="dijit.form.Button" jsId="acq[% which %]EditOrderMarc" class="hidden">Edit MARC Order Record</div>
+ </div>
+ <div id="acq-[% which_lc %]-marc-div" style="margin-top:20px;"> </div>
+ </div>
+[% END %]
+ </div>
--- /dev/null
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/common/inv_dialog.js">
+</script>
+<big><strong>Choose invoice</strong></big>
+<table class="acq-link-invoice-dialog">
+ <tr>
+ <th>
+ <label for="acq-[% which %]-link-invoice-inv_ident">
+ Invoice #
+ </label>
+ </th>
+ <td>
+ <input id="acq-[% which %]-link-invoice-inv_ident"
+ dojoType="dijit.form.TextBox" />
+ </td>
+ </tr>
+ <tr>
+ <th>
+ <label for="acq-[% which %]-link-invoice-provider">Provider</label>
+ </th>
+ <td>
+ <span id="acq-[% which %]-link-invoice-provider"></span>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" style="text-align: center;">
+ <button id="acq-[% which %]-link-invoice-link"
+ dojoType="dijit.form.Button" type="submit">Link</button>
+ </td>
+ </tr>
+</table>
--- /dev/null
+[%#-
+This template creates a split screen Dojo layout. The top frame
+of the screen holds a list of of JUBs, or titles. Clicking on a
+title in the top frame will load the purchase details for all the
+copies on order for that title into the bottom frame.
+
+To create a display for a set of JUBs, create a Dojo store and
+model for the set of JUBs, then place the following lines in your
+HTML where you want the display to appear:
+
+ <%namespace file='/oils/default/common/jubgrid.html' name='jubgrid'/>
+ ${jubgrid.jubgrid('dom_prefix', 'grid_jsid')}
+
+where 'dom_prefix' is a string that will be used as the prefix
+for the DOM notes that are created by this template, and
+'grid_jsid' is a valid JavaScript identifier that will name the
+DOM node to which the list of JUBs will be attached. For example
+
+ ${jubgrid.jubgrid('oils-acq-picklist', 'pickListGrid', hideDetails)}
+
+will create a Dojo grid with the DOM id of
+
+ 'oils-acq-picklist-JUB-grid'
+
+and a jsid of
+
+ pickListGrid
+
+To fill the grid with data, call the javascript function
+
+ JUBGrid.populate(grid_jsid, model)
+
+'grid_jsid' is the same javascript id that was used to
+instantiate the template, and model is a javascript variable
+pointing to the JUB model (and store) that you have created.
+-#%]
+
+[% UNLESS hide_details %]
+<div dojoType='dijit.layout.ContentPane' style='height:100%;'>
+[% END %]
+
+ <style type='text/css'>
+ .grid_container {width: 100%; height: 100%;}
+ </style>
+
+ <script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/common/jubgrid.js'> </script>
+ <script type="text/javascript" src='[% ctx.media_prefix %]/js/dojo/openils/CopyLocation.js'> </script>
+ <script type="text/javascript">
+ JUBGrid.getPO = function(rowIndex) {
+ var data = JUBGrid.jubGrid.model.getRow(rowIndex);
+ if (!(data && data.purchase_order)) return '';
+ return "<a href='[% ctx.base_path %]/acq/po/view/" + data.purchase_order+"'>"+data.purchase_order+"</a>";
+ }
+ JUBGrid.jubGridLayout = [{
+ //noscroll: true,
+ cells: [[
+ {name: 'ID', field: 'id', width:'auto'},
+ {name: 'Title', width: "180px", get:JUBGrid.getJUBTitle},
+ {name: 'Author', get:JUBGrid.getJUBAuthor, width:'auto'},
+ {name: 'ISBN', get:JUBGrid.getJUBIsbn, width:'auto'},
+ {name: 'Pubdate', get:JUBGrid.getJUBPubdate, width:'auto'},
+ {name: 'Actual Price',
+ field:'actual_price',
+ get:JUBGrid.getJUBActualPrice,
+ editor:dojox.grid.editors.Dijit, width:'auto',
+ editorClass: "dijit.form.CurrencyTextBox"
+ },
+ {name: 'Estimated Price',
+ field:'estimated_price',
+ get:JUBGrid.getJUBEstimatedPrice, width:'auto',
+ editor:dojox.grid.editors.Dijit,
+ editorClass: "dijit.form.CurrencyTextBox"
+ },
+ {name: 'Vendor', width:'auto',
+ field: 'provider', get:JUBGrid.getProvider,
+ editor:openils.editors.ProviderSelectEditor,
+ },
+ {name: 'No. Copies', field: 'item_count', width:'auto'},
+ {name: 'State', field: 'state', width:'auto'},
+ {name: 'PO', get:JUBGrid.getPO, width:'auto'}
+ ]]
+ }];
+
+ JUBGrid.jubDetailGridLayout = [{
+ cells: [[
+ {name:"ID", field:"id"},
+ {name:"Fund", field:"fund",
+ get:JUBGrid.getLIDFundCode,
+ editor: openils.editors.FundSelectEditor,
+ },
+ {name:"Branch", field:"owning_lib",
+ get:JUBGrid.getLIDLibName,
+ editor: openils.editors.OrgUnitSelectEditor
+ },
+ {name:"Barcode", field:"barcode", width:'auto',
+ editor:dojox.grid.editors.Dijit,
+ editorClass: "dijit.form.TextBox"
+ },
+ {name:"Call Number", field:"cn_label", width:'auto',
+ editor:dojox.grid.editors.Dijit,
+ editorClass: "dijit.form.TextBox"
+ },
+ {name:"Shelving Location", field:"location", width:'auto',
+ editor:openils.editors.CopyLocationSelectEditor,
+ get:JUBGrid.getCopyLocation
+ },
+ {name:"Receive Time", width:'auto',
+ get:JUBGrid.getRecvTime
+ },
+ ]]
+ }];
+
+ JUBGrid.jubDetailGridLayoutReadOnly = [{
+ cells: [[
+ {name:'ID', field:"id"},
+ {name:'Fund', field:"fund",
+ get:JUBGrid.getLIDFundCode,
+ },
+ {name:'Branch', field:"owning_lib",
+ get:JUBGrid.getLIDLibName,
+ },
+ {name:'Barcode', field:"barcode", width:'auto'},
+ {name:'Call Number', field:"cn_label", width:'auto'},
+ {name:'Shelving Location', field:"location",
+ width:'auto', get:JUBGrid.getCopyLocation},
+ ]]
+ }];
+ </script>
+
+[% UNLESS hide_details %]
+ <!-- button bar for lineitems -->
+ <script type="text/javascript">JUBGrid.showDetails = true;</script>
+ <div id="[% domprefix %]-container" class='container'
+ dojoType="dijit.layout.ContentPane" sizeMin="" sizeShare="">
+ <div dojoType="dijit.layout.ContentPane"
+ id='[% domprefix %]-jub-buttonbar'>
+ <button dojoType="dijit.form.Button" onclick="JUBGrid.approveJUB">
+ Approve Selected Titles
+ </button>
+ <button dojoType="dijit.form.Button" onclick="JUBGrid.removeSelectedJUBs">
+ Remove Selected Titles
+ </button>
+ </div>
+ </div>
+ <div style='height:40%;'>
+[% ELSE %]
+ <div style='height:100%;'>
+[% END %]
+ <div structure='JUBGrid.jubGridLayout' jsid='[% grid_jsid %]' class='grid_container'
+ dojoType='dojox.Grid' id="[% domprefix %]-JUB-grid">
+ </div>
+ </div>
+[% UNLESS hide_details %]
+ <!-- button bar for lineitem details -->
+ <div dojoType="dijit.layout.ContentPane" sizeMin="" sizeShare="" class='container'>
+ <div dojoType="dijit.layout.ContentPane" id='[% domprefix %]-details-buttonbar'>
+ <div dojoType="dijit.form.DropDownButton">
+ <span>New Copy</span>
+ <div dojoType="dijit.TooltipDialog" execute="JUBGrid.createLID(arguments[0]);">
+ <script type='dojo/connect' event='onOpen'>
+ new openils.User().buildPermOrgSelector('MANAGE_FUND', copyOwnerSelect);
+ openils.acq.Fund.buildPermFundSelector('MANAGE_FUND', acqlidFund);
+ </script>
+ <table class="dijitTooltipTable">
+ <tr>
+ <td><label for="fund">Fund: </label></td>
+ <td>
+ <input dojoType="openils.widget.FundSelector"
+ jsId="acqlidFund" searchAttr="name" autocomplete="true" name="fund"></input>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="owning_lib">Location: </label></td>
+ <td><input dojoType="openils.widget.OrgUnitFilteringSelect"
+ jsId="copyOwnerSelect"
+ searchAttr="shortname"
+ name="owning_lib" autocomplete="true"
+ labelAttr="shortname"></input>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" align="center">
+ <button dojotype="dijit.form.Button" type="submit">
+ Create
+ </button>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <button dojoType='dijit.form.Button' onclick='JUBGrid.deleteLID'>
+ Delete Selected Copy
+ </button>
+ <button dojoType='dijit.form.Button' onclick='JUBGrid.receiveLID'>
+ Mark Selected Copies Received
+ </button>
+ </div>
+ </div>
+ <!-- end button bar -->
+
+ <div style='height:40%;'>
+ <div class='grid_container'>
+ <div structure='JUBGrid.jubDetailGridLayout' jsid="JUBGrid.jubDetailGrid" dojoType="dojox.Grid"
+ id='[% domprefix %]-details-grid'>
+ </div>
+ </div>
+ </div>
+</div>
+[% END %]
--- /dev/null
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/common/base64.js"> </script>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/common/li_table.js'> </script>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/financial/claim_voucher.js'> </script>
+<div id='acq-lit-table-container'>
+ <div id='acq-lit-table-div' class='hidden'>
+
+ <!-- Lineitem (bib record) list -->
+ <table id='acq-lit-table' class='oils-generic-table'>
+ <thead>
+ <tr>
+ <th colspan='0'>
+ <table style='width:100%;'>
+ <tr>
+ <td>
+ <span>
+ <select id="acq-lit-li-actions-selector">
+ <option mask='*' value='_'>--Actions--</option>
+ <option mask='sr' value='save_picklist'>Save Items To Selection List</option>
+ <option mask='pl' value='selector_ready'>Mark Ready for Selector</option>
+ <option mask='pl' value='order_ready'>Mark Ready for Order</option>
+ <option mask='*' value='delete_selected'>Delete Selected Items</option>
+ <option mask='*' value='add_brief_record'>Add Brief Record</option>
+ <option mask='*' value='export_attr_list'>Export Single Attribute List</option>
+ <option mask='*' value='batch_apply_funds'>Apply Funds to Selected Items</option>
+ <option mask='po' value='' disabled='disabled'>----PO----</option>
+ <option mask='sr|pl' value='create_order'>Create Purchase Order</option>
+ <option mask='po' value='create_assets'>Load Bibs and Items</option>
+ <option mask='po' value='cancel_lineitems'>Cancel Selected Lineitems</option>
+ <option mask='po' value='change_claim_policy'>Change Claim Policy</option>
+ <option mask='po' value='receive_po'>Mark Purchase Order as Received</option>
+ <option mask='po' value='rollback_receive_po'>Un-Receive Purchase Order</option>
+ <option mask='po' value='print_po'>Print Purchase Order</option>
+ <option mask='po' value='po_history'>View PO History</option>
+ </select>
+ <span id="acq-lit-export-attr-holder" class="hidden">
+ <input dojoType="dijit.form.FilteringSelect" id="acq-lit-export-attr" jsId="acqLitExportAttrSelector" labelAttr="description" searchAttr="description" />
+ <span dojoType="dijit.form.Button" jsId="acqLitExportAttrButton">Export List</span>
+ </span>
+ <span id="acq-lit-cancel-reason" class="hidden">
+ <span id="acq-lit-cancel-reason-selector"></span>
+ <span dojoType="dijit.form.Button" jsId="acqLitCancelLineitemsButton">Cancel Line Items</span>
+ </span>
+ </span>
+ <span id='acq-lit-generic-progress' class='hidden'>
+ <span dojoType="dijit.ProgressBar" style="width:300px" jsId="litGenericProgress"></span>
+ </span>
+ </td>
+ <td>
+ <div style='width:100%;text-align:right;'>
+ <span style='padding-right:15px;'>
+ <a href='javascript:void(0);' id='acq-lit-prev' style='visibility:hidden'>« Previous</a>
+ <a href='javascript:void(0);' id='acq-lit-next' style='visibility:hidden'>Next »</a>
+ </span>
+ </div>
+ </td>
+ </tr>
+ </table>
+ </th>
+ </tr>
+ </thead>
+ <tbody><tr><td colspan='0' style='height:20px;'/></tr></tbody>
+ <tbody style='font-weight:bold;border:1px solid #aaa;'>
+ <tr>
+ <td><span><a id='acq-lit-select-toggle' href='javascript:void(0);'>✓</a></span></td>
+ <td>Line Items</td>
+ <td>Items</td>
+ <td>Notes</td>
+ <td>Actions</td>
+ <td>Status</td>
+ <td>Estimated Price</td>
+ </tr>
+ </tbody>
+ <tbody id='acq-lit-tbody'>
+ <tr id='acq-lit-row' class='acq-lit-row'>
+ <td name='selector'><input type='checkbox' name='selectbox'/></td>
+ <td style='width:75%;'>
+ <table style='width:100%;'>
+ <tbody>
+ <tr>
+ <td rowspan='3' style='width:43px;'><img style='width:40px;height:65px;' name='jacket'></td>
+ <td style='width:70%;font-weight:bold;'>
+ <span name="bib_origin" class="hidden">
+ <img src="/opac/images/book-icon.png" />
+ </span><a attr='title' href='javascript:void(0);'></a>
+ </td>
+ <td rowspan='2' style='text-align:right'>
+ </td>
+ </tr>
+ <tr class='acq-lit-alt-row'>
+ <td colspan='0'>
+ <span attr='author'></span>
+ <span attr='isbn'></span>
+ <span attr='issn'></span>
+ <span attr='edition'></span>
+ <span attr='pubdate'></span>
+ <span attr='publisher'></span>
+ <span name='source_label'></span>
+ </td>
+ </tr>
+ <tr>
+ <td colspan='0'>
+ <span name="liid"># </span>
+ <span name="catalog" class='hidden'> | <a title='Show In Catalog' name="catalog_link" href="javascript:void(0);">➟ catalog</a></span>
+ <span name="link_to_catalog" class='hidden'> | <a title='Link To Catalog Record' name="link_to_catalog_link" href="javascript:void(0);">➾ link to catalog</a></span>
+ <span name="worksheet"> | <a title='Generate Worksheet' name="worksheet_link" href="javascript:void(0);">✍ worksheet</a></span>
+ <span name='pl' class='hidden'> | <a title='Select List' name='pl_link' href='javascript:void(0);'>❖ </a></span>
+ <span name='po' class='hidden'> | <a title='Purchase Order' name='po_link' href='javascript:void(0);'>⌘ </a></span>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ <td><a title='FOOOBAR' name='copieslink' href='javascript:void(0);'>Copies(<span name='count'>0</span>)</a></td>
+ <td>
+ <a name='noteslink' href='javascript:void(0);'>Notes(<span name='notes_count'>0</span>)</a><span name="notes_alert_flag"></span>
+ </td>
+ <td>
+ <select name='actions'>
+ <option name='action_none'>-- Actions --</option>
+ <option name='action_mark_recv' disabled='disabled'>Mark Received</option>
+ <option name='action_mark_unrecv' disabled='disabled'>Un-Receive</option>
+ <option name='action_update_barcodes' disabled='disabled'>Update Barcodes</option>
+ <option name='action_holdings_maint' disabled='disabled'>Holdings Maint.</option>
+ <option name='action_new_invoice' disabled='disabled'>New Invoice</option>
+ <option name='action_link_invoice' disabled='disabled'>Link to Invoice</option>
+ <option name='action_view_invoice' disabled='disabled'>View Invoice(s)</option>
+ <option name='action_view_claim_policy'>Apply Claim Policy</option>
+ <option name='action_manage_claims' disabled='disabled'>Claims</option>
+ <option name='action_view_history'>View History</option>
+ </select>
+ </td>
+ <td><span name='li_state'></span></td>
+ <td><input type='text' size='8' name='price'/></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ <!-- Bib record / Lineitem info table -->
+ [% INCLUDE "acq/common/info.tt2" which = "Lit" %]
+
+ <!-- Lineitem notes table -->
+ [% INCLUDE "acq/common/notes.tt2" which = "Lit" %]
+
+ <!-- Copies table -->
+ <div id='acq-lit-li-details' class='hidden'>
+
+ <div id='acq-lit-copies-li-summary'></div>
+
+ <h3>Add/Edit Items</h3>
+ <hr/>
+
+ <div class='acq-lit-li-menu-bar'>
+ <table style='width:100%'>
+ <tr>
+ <td class="acq-lit-li-menu-left">
+ <div dojoType='dijit.form.Button' id='acq-lit-copies-back-button' scrollOnFocus='false'>↖ Return</div>
+ <span style='margin-left:10px;padding-left:10px;border-left:2px solid #aaa;'>
+ Item Count:
+ <input dojoType='dijit.form.NumberTextBox' jsId='acqLitCopyCountInput'
+ constraints="{min:0,max:1000,places:0}" style='width:40px' value='0'></input>
+ <div dojoType='dijit.form.Button' jsId='acqLitAddCopyCount' scrollOnFocus='false'>Go</div>
+ </span>
+ <span style='margin-left:10px;padding-left:10px;border-left:2px solid #aaa;'>
+ <div dojoType='dijit.form.Button' jsId='acqLitSaveCopies' scrollOnFocus='false'>Save Changes</div>
+ </span>
+ <span id='acq-lit-update-copies-progress' class='hidden'>
+ <span dojoType="dijit.ProgressBar" style="width:300px" jsId="litUpdateCopiesProgress"></span>
+ </span>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ <hr/>
+ <table id='acq-lit-distrib-formula-table'>
+ <tbody id='acq-lit-distrib-formula-tbody'>
+ <tr id='acq-lit-distrib-form-row'>
+ <td colspan='0'>
+ <span>Distribution Formulas</span>
+ <div name='selector'></div>
+ <div name='set_button'></div>
+ <div name="reset_button"></div>
+ </td>
+ </tr>
+ </tbody>
+ <tbody id="acq-lit-distrib-applied-tbody" class="hidden">
+ <tr>
+ <td colspan="5" id="acq-lit-distrib-applied-heading">
+ Distribution formulas applied to this lineitem:
+ </td>
+ </tr>
+ <tr id="acq-lit-distrib-applied-row" class="acq-lit-distrib-applied-row">
+ <th></th>
+ <td colspan="4"></td>
+ </tr>
+ </tbody>
+ <table>
+
+ <table id='acq-lit-li-details-table'>
+ <tbody><tr><td class='acq-lit-table-spacer' colspan='0'/></tr></tbody>
+ <tbody style='font-weight:bold;'>
+ <tr>
+ <td style='margin-top:30px;'>Owning Branch</td>
+ <td>Shelving Location</td>
+ <td>Collection Code</td>
+ <td>Fund</td>
+ <td>Circ Modifier</td>
+ <td>Callnumber</td>
+ <td colspan='0'></td>
+ </tr>
+ </tbody>
+ <tbody style='background-color:#ddd;'>
+ <tr id='acq-lit-li-details-batch-row'>
+ <td><div name='owning_lib'></div></td>
+ <td><div name='location'></div></td>
+ <td><div name='collection_code'></div></td>
+ <td><div name='fund'></div></td>
+ <td><div name='circ_modifier'></div></td>
+ <td><div name='cn_label'></div></td>
+ <td colspan='3' style='text-align:left;'>
+ <div dojoType='dijit.form.Button' jsId='acqLitBatchUpdateCopies' scrollOnFocus='false'>Batch Update</div>
+ </td>
+ </tr>
+ </tbody>
+
+
+ <tbody><tr><td class='acq-lit-table-spacer' colspan='0'></td></tr></tbody>
+ <tbody style='font-weight:bold;'>
+ <tr>
+ <td style='margin-top:30px;'>Owning Branch</td>
+ <td>Shelving Location</td>
+ <td>Collection Code</td>
+ <td>Fund</td>
+ <td>Circ Modifier</td>
+ <td>Callnumber</td>
+ <td>Barcode</td>
+ <td>Notes</td>
+ <td>Receiver</td>
+ <td colspan='0'></td>
+ </tr>
+ </tbody>
+ <tbody id='acq-lit-li-details-tbody' class='oils-generic-table'>
+ <tr id='acq-lit-li-details-row'>
+ <td><div name='owning_lib'></div></td>
+ <td><div name='location'></div></td>
+ <td><div name='collection_code'></div></td>
+ <td><div name='fund'></div></td>
+ <td><div name='circ_modifier'></div></td>
+ <td><div name='cn_label'></div></td>
+ <td><div name='barcode'></div></td>
+ <td><div name='note'></div></td>
+ <td><div name='receiver'></div></td>
+ <td><a href="javascript:void(0);" name="receive">Mark Received</a><a href="javascript:void(0);" name="unreceive">Un-Receive</a> <a href="javascript:void(0);" name="cancel">Cancel</a><span class="hidden" name="cancel_reason"></span> <a href="javascript:void(0);" name="claim">Claim</a></td>
+ <td><div name='delete' dojoType='dijit.form.Button' style='color:red;' scrollOnFocus='false'>X</div></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+
+ <!-- Copies table -->
+ <div id='acq-lit-real-copies-div' class='hidden'>
+ <h2>Copies</h2>
+
+ <div class='acq-lit-li-menu-bar'>
+ <table style='width:100%'>
+ <tr>
+ <td style='text-align:left;'>
+ <div dojoType='dijit.form.Button' id='acq-lit-real-copies-back-button' scrollOnFocus='false'>↖ Return</div>
+ </td>
+ <td style='text-align:right;'>
+ <span>
+ <div dojoType='dijit.form.Button' jsId='acqLitSaveRealCopies' scrollOnFocus='false'>Save Changes</div>
+ </span>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ <table id='acq-lit-real-copies-table'>
+ <tbody style='font-weight:bold;'>
+ <tr>
+ <td style='margin-top:30px;'>Owning Branch</td>
+ <td>Shelving Location</td>
+ <td>Circ Modifier</td>
+ <td>Callnumber</td>
+ <td>Barcode</td>
+ <td colspan='0'></td>
+ </tr>
+ </tbody>
+ <tbody id='acq-lit-real-copies-tbody' class='oils-generic-table'>
+ <tr id='acq-lit-real-copies-row'>
+ <td><div name='owning_lib'></div></td>
+ <td><div name='location'></div></td>
+ <td><div name='circ_modifier'></div></td>
+ <td><div name='label'></div></td>
+ <td><div name='barcode'></div></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ <div class="hidden">
+ <div jsId="acqLitLinkInvoiceDialog" dojoType="dijit.Dialog">
+ [% INCLUDE "acq/common/inv_dialog.tt2" which = "li" %]
+ </div>
+ </div>
+
+ <div class='hidden' id='acq-lit-progress-numbers'>
+ <table class='oils-generic-table'>
+ <tbody>
+ <tr>
+ <td>Lineitems Processed</td>
+ <td><span id='acq-pl-lit-li-processed'>0</span></td>
+ </tr>
+ <tr>
+ <td>Items Processed</td>
+ <td><span id='acq-pl-lit-lid-processed'>0</span></td>
+ </tr>
+ <tr>
+ <td>Debits Encumbered</td>
+ <td><span id='acq-pl-lit-debits-processed'>0</span></td>
+ </tr>
+ <tr>
+ <td>Bib Records Imported</td>
+ <td><span id='acq-pl-lit-bibs-processed'>0</span></td>
+ </tr>
+ <tr>
+ <td>Bib Records Indexed</td>
+ <td><span id='acq-pl-lit-indexed-processed'>0</span></td>
+ </tr>
+ <tr>
+ <td>Copies Processed</td>
+ <td><span id='acq-pl-lit-copies-processed'>0</span></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ <div class='hidden'>
+ <div dojoType='dijit.Dialog' jsId='acqLitPoCreateDialog'>
+ <table class='oils-generic-table'>
+ <tr>
+ <td>Ordering Agency</td>
+ <td><div name='ordering_agency' id='acq-lit-po-agency'></div></td>
+ </tr>
+ <tr>
+ <td>Provider</td>
+ <td><div name='provider' id='acq-lit-po-provider'></div></td>
+ </tr>
+ <tr>
+ <td>Prepayment Required</td>
+ <td><input id="acq-lit-po-prepay" name="prepayment_required" dojoType="dijit.form.CheckBox"/></td>
+ </tr>
+ <tr>
+ <td>All Lineitems</td>
+ <td><input checked='checked' name='create_from' value='all' dojoType='dijit.form.RadioButton'/></td>
+ </tr>
+ <tr>
+ <td>Selected Lineitems</td>
+ <td><input name='create_from' value='selected' dojoType='dijit.form.RadioButton'/></td>
+ </tr>
+ <tr>
+ <td>Import Bibs and Create Copies</td>
+ <td><input name='create_assets' dojoType='dijit.form.CheckBox'/></td>
+ </tr>
+ <tr>
+ <td colspan='2'>
+ <div dojoType='dijit.form.Button' type='submit' jsId='acqLitCreatePoSubmit'>Submit</div>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+
+ <div class="hidden">
+ <div dojoType="dijit.Dialog" jsId='acqLitSavePlDialog'>
+ <table class='dijitTooltipTable'>
+ <tr>
+ <td colspan='2'>
+ <input dojoType="dijit.form.RadioButton" name="which" type='radio' checked='checked' value='selected'/>
+ <label for="name">Save selected</label>
+ <input dojoType="dijit.form.RadioButton" name="which" type='radio' value='all'/>
+ <label for="name">Save all</label>
+ </td>
+ </tr>
+ <tr><td colspan='2'><hr/></td></tr>
+ <tr>
+ <td><label for="new_name">Save as Selection List: </label></td>
+ <td><input dojoType="dijit.form.TextBox" name="new_name"/></td>
+ </tr>
+ <tr>
+ <td><label for="existing_pl">Add to Selection List: </label></td>
+ <td>
+ <input jsId="acqLitAddExistingSelect" dojoType="openils.widget.PCrudAutocompleteBox" fmclass="acqpl" searchAttr="name" name="existing_pl" />
+ </td>
+ </tr>
+ <tr>
+ <td colspan='2' align='center'>
+ <button dojoType='dijit.form.Button' type="submit" jsId='acqLitSavePlButton'>Save</button>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ <div dojoType="dijit.Dialog" jsId="lidCancelDialog">
+ <label for="acq-lit-lid-cancel-reason">Reason:</label>
+ <span id="acq-lit-lid-cancel-reason"></span>
+ <span dojoType="dijit.form.Button"
+ jsId="acqLidCancelButton">Cancel Copy</span>
+ </div>
+ <div dojoType="dijit.Dialog" jsId="liClaimPolicyDialog">
+ <label for="acq-lit-li-claim-policy">Claim policy:</label>
+ <span id="acq-lit-li-claim-policy"></span>
+ <span dojoType="dijit.form.Button"
+ jsId="liClaimPolicySave">Save</span>
+ </div>
+ <div dojoType="dijit.Dialog" jsId="liClaimDialog">
+ [% INCLUDE "acq/common/claim_dialog.tt2" %]
+ </div>
+ <div dojoType="dijit.Dialog" jsId="finalClaimDialog">
+ [% INCLUDE "acq/common/final_claim_dialog.tt2" %]
+ </div>
+ <div dojoType="dijit.Dialog" jsId="batchFundUpdateDialog" title="Batch Update Funds">
+ <div>
+ This will update the fund for all copies attached to these lineitems.<br/>
+ This will also update any existing encumbered or spent debits.
+ </div>
+ <br/>
+ <table class='oils-generic-table'>
+ <tr>
+ <td>
+ <span>Select a new fund:</span>
+ </td>
+ <td>
+ <div id='acq-lit-batch-fund-selector'></div>
+ </td>
+ </tr>
+ <tr>
+ <td><button dojoType='dijit.form.Button' jsId='batchFundUpdateCancel'>Cancel</button></td>
+ <td><button dojoType='dijit.form.Button' jsId='batchFundUpdateSubmit'>Submit</button></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+
+ <div dojoType="dijit.Dialog" jsId='acqLitChangeLiStateDialog'>
+ <table class='dijitTooltipTable'>
+ <tr>
+ <td>
+ <input dojoType="dijit.form.RadioButton" name="which" type='radio' checked='checked' value='selected'/>
+ <label for="name">Mark selected</label>
+ <input dojoType="dijit.form.RadioButton" name="which" type='radio' value='all'/>
+ <label for="name">Mark all</label>
+ </td>
+ </tr>
+ <tr>
+ <td colspan='2' align='center'>
+ <button dojoType='dijit.form.Button' type="submit" jsId='acqLitCancelLiStateButton'>Cancel</button>
+ <button dojoType='dijit.form.Button' type="submit" jsId='acqLitSaveLiStateButton'>Go</button>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+
+ <div class='hidden'>
+ <div dojoType='openils.widget.ProgressDialog' jsId='progressDialog'></div>
+ </div>
+
+</div>
+
--- /dev/null
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/common/li_table_pager.js">
+</script>
+<div id="acq-litpager-controls">
+ <button id="acq-litpager-controls-prev" disabled="disabled">
+ « Prev
+ </button>
+ <span id="acq-litpager-controls-batch-range" class="hidden">
+ <span id="acq-litpager-controls-batch-start"></span> —
+ <span id="acq-litpager-controls-batch-end"></span>
+ <span id="acq-litpager-controls-total-holder" class="hidden">
+ of <span id="acq-litpager-controls-total"></span>
+ </span>
+ </span>
+ <button id="acq-litpager-controls-next" disabled="disabled">
+ Next »
+ </button>
+</div>
--- /dev/null
+[% which_lc = which | lower %]
+ <div id="acq-[% which_lc %]-notes-div" class="hidden">
+ <div class="acq-menu-bar">
+ <table style="width:100%">
+ <tr>
+ <td style="text-align:left;">
+ <div dojoType="dijit.form.Button" id="acq-[% which_lc %]-notes-back-button">↖ Return</div>
+ </td>
+ <td style="text-align:right;">
+ <div dojoType="dijit.form.DropDownButton">
+ <span>New Note</span>
+ <div dojoType="dijit.TooltipDialog">
+ <div class="acq-notes-note-row">
+ <div jsId="acq[% which %]CreateNoteText" dojoType="dijit.form.Textarea" style="height:5em; width:25em;" name="note"></div>
+ <div style="margin: 8px 0;">
+ <div dojoType="dijit.form.CheckBox" jsId="acq[% which %]CreateNoteVendorPublic" name="vendor_public" id="acq-[% which_lc %]-create-note-vendor-public"></div><label for="acq-[% which_lc %]-create-note-vendor-public">Note is vendor-public</label>
+ </div>
+ </div>
+ <button jsId="acq[% which %]CreateNoteSubmit" dojoType="dijit.form.Button" type="submit">Create</button>
+ </div>
+ </div>
+[% IF which == "Lit" %]
+ <div dojoType="dijit.form.DropDownButton">
+ <span>New Alert</span>
+ <div dojoType="dijit.TooltipDialog">
+ <div class="acq-notes-note-row">
+ <label for="acq-lit-alert-alert-text">Choose alert code </label>
+ <input id="acq-lit-alert-alert-text" jsId="acqLitAlertAlertText" dojoType="dijit.form.FilteringSelect" labelAttr="code" searchAttr="code" required="true" />
+ </div>
+ <div class="acq-notes-note-row">
+ <label for="acq-lit-alert-value">Additional comments</label>
+ <div jsId="acqLitAlertNoteValue" id="acq-lit-alert-value" dojoType="dijit.form.Textarea" name="value"></div>
+ </div>
+ <button jsId="acqLitCreateAlertSubmit" dojoType="dijit.form.Button" type="submit">Create</button>
+ </div>
+ </div>
+[% END %]
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ <ol id="acq-[% which_lc %]-notes-tbody">
+ <li id="acq-[% which_lc %]-notes-row">
+ <table style="width:100%;" class="oils-generic-table">
+ <tr>
+ <td width="70%" align="left">
+ <span name="vendor_public"></span>
+ <span name="alert_code"></span>
+ <span style="font-size:120%" name="value"></span>
+ </td>
+ <td align="right" style="padding-right:30px;">
+ <span name="edit_time"></span>
+ <span style="padding-left:4px;">
+ <a name="delete" href="javascript:void(0);" style="color:red;">Delete</a>
+ </span>
+ </td>
+ </tr>
+ </table>
+ </li>
+ </ol>
+ </div>
--- /dev/null
+[% WRAPPER "base.tt2" %]
+[% ctx.page_title = "Items Eligible For Claiming" %]
+<script type="text/javascript">var filter = "[% ctx.page_args.0 %]";</script>
+<div>
+ <h1>Items Eligible For Claiming</h1>
+ <div class="oils-acq-basic-roomy">
+ Show items ready to claim for:
+ <select
+ dojoType="openils.widget.OrgUnitFilteringSelect"
+ jsId="orderingAgency" searchAttr="shortname"
+ labelAttr="shortname"></select>
+ <span dojoType="openils.widget.ProgressDialog"
+ jsId="progressDialog"></span>
+ </div>
+ <div class="oils-acq-basic-roomy">
+ <button name="claim_submit">Claim selected items</button>
+ </div>
+ <table id="acq-eligible-li-table">
+ <thead>
+ <tr>
+ <th><input type="checkbox" name="selector_all" /></th>
+ <th>Items</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr><!-- item template -->
+ <td>
+ <input type="checkbox" name="selector" />
+ </td>
+ <td>
+ <div name="description"></div>
+ <div name="lid_link_holder" class="hidden">
+ [ <a href="javascript:void(0);"
+ name="lid_link">Consider individual copies
+ for claiming</a> ]
+ </div>
+ </td>
+ </tr>
+ <tr><!-- empty template -->
+ <td colspan="2">
+ <em>There were no items matching your search.</em>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <div class="oils-acq-basic-roomy">
+ <button name="claim_submit">Claim selected items</button>
+ </div>
+</div>
+<div class="hidden">
+ <div dojoType="dijit.Dialog" jsId="finalClaimDialog">
+ [% INCLUDE "acq/common/final_claim_dialog.tt2" %]
+ </div>
+</div>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/financial/claim_eligible.js"> </script>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/financial/claim_voucher.js"> </script>
+[% END %]
--- /dev/null
+[% WRAPPER base.tt2 %]
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client" class='oils-header-panel'>
+ <div>Currency Type</div>
+ <div>
+ <button dojoType='dijit.form.Button' onClick='ctGrid.showCreateDialog()'>New Currency Type</button>
+ <button dojoType='dijit.form.Button' onClick='ctGrid.deleteSelected()'>Delete Selected</button>
+ </div>
+</div>
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+ <table jsId="ctGrid"
+ autoHeight='true'
+ dojoType="openils.widget.AutoGrid"
+ fieldOrder="['code', 'label']"
+ defaultCellWidth='25'
+ query="{code: '*'}"
+ fmClass='acqct'
+ editOnEnter='true'>
+ </table>
+</div>
+
+<script type="text/javascript">
+ dojo.require('dijit.layout.ContentPane');
+ dojo.require('dijit.form.Button');
+ dojo.require('openils.widget.AutoGrid');
+ dojo.require('openils.Util');
+ openils.Util.addOnLoad(
+ function() {
+ ctGrid.loadAll({order_by:{acqct : 'code'}});
+ }
+ );
+</script>
+
+[% END %]
+
+
--- /dev/null
+[% WRAPPER 'base.tt2' %]
+
+<!-- The main grid lives here -->
+<script type="text/javascript">
+ function getName(rowIndex, item) {
+ if(!item) return '';
+ var name = this.grid.store.getValue(item, 'name');
+ var id = this.grid.store.getValue(item, 'id');
+ // weird hack to pass the data we need to the formatter which is now required for HTML cell values
+ return id + ':' + name;
+ }
+
+ function formatName(value) {
+ if(value) {
+ var vals = value.split(/:/);
+ return '<a href="[% ctx.base_path %]/acq/funding_source/view/'+vals[0]+'">'+vals[1]+'</a>';
+ }
+ }
+</script>
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="top" class='oils-header-panel'>
+ <div>Funding Sources</div>
+ <div>
+ <button dojoType='dijit.form.Button' onClick='fsGrid.showCreateDialog()'>New Funding Source</button>
+ <button dojoType='dijit.form.Button' onClick='fsGrid.deleteSelected()'>Delete Selected</button>
+ </div>
+ </div>
+
+ <table jsId="fsGrid"
+ dojoType="openils.widget.AutoGrid"
+ fieldOrder="['id', 'name', 'owner', 'code', 'currency_type', 'balance']"
+ query="{name: '*'}"
+ defaultCellWidth='"auto"'
+ fmClass='acqfs'
+ editOnEnter='true'>
+ <thead>
+ <tr>
+ <th field="name" get='getName' formatter='formatName'/>
+ <th field="owner" get='getOrgInfo'/>
+ <th field="balance" get='getBalanceInfo'/>
+ </tr>
+ </thead>
+ </table>
+</div>
+
+<!-- load the page-specific JS -->
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/financial/list_funding_sources.js'></script>
+
+[% END %]
--- /dev/null
+[% WRAPPER 'base.tt2' %]
+[% ctx.page_title = 'Funds' %]
+
+<!-- load the page-specific JS -->
+<script type="text/javascript">
+ function getFundName(rowIndex, item) {
+ if (!item) return null;
+ return {
+ "name": this.grid.store.getValue(item, "name"),
+ "id": this.grid.store.getValue(item, "id")
+ };
+ }
+
+ function formatName(value) {
+ if (!value) return ""; // XXX
+
+ var link = "<a href='/eg/acq/financial/view_fund/" +
+ value.id + "'>" +
+ value.name + "</a>";
+
+ /* TODO: add another element here to which we can attach a tooltip
+ showing tags */
+ return link;
+ }
+
+ function createNewFund() {
+ /* Set the display constraints before drawing the edit dialog;
+ introduce Y2K and Y2K2C problem */
+ lfGrid.overrideWidgetArgs = {year: { dijitArgs: {constraints : {min: 2000, max: 2200, pattern : '####'}}}};
+ lfGrid.showCreateDialog();
+ }
+
+</script>
+
+<table style='width:100%;'>
+ <tr>
+ <!-- TODO CSS -->
+ <td style='text-align:left;font-size:130%;font-weight: bold;'>Funds</td>
+ <td style='text-align:right;width:90%;'>
+
+ <button dojoType='dijit.form.Button' onClick='createNewFund()'>New Fund</button>
+ <button dojoType='dijit.form.Button' onClick='lfGrid.deleteSelected()'>Delete Selected</button>
+
+ <div dojoType="dijit.form.DropDownButton">
+ <span>Fund Propagation & Rollover</span>
+ <div dojoType="dijit.TooltipDialog" execute="performRollover(arguments[0]);">
+ <table class='dijitTooltipTable' id='oils-acq-rollover-tooltip-table'>
+ <tr>
+ <td colspan='2'>
+ <div style='width:400px;'>
+ Propagation creates new funds for the subsequent fiscal year based on the
+ funds for the selected fiscal year. Only funds with the propagate setting
+ enabled will be affected. No money or encumbrances are altered
+ during this process.
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="rollover">Perform Fiscal Year Close-out Operation: </label></td>
+ <td>
+ <input dojoType="dijit.form.CheckBox" name="rollover"> </input>
+ </td>
+ </tr>
+ <tr>
+ <td colspan='2'>
+ <div style='width:400px;'>
+ The year end close out operation moves encumbrances from the selected fiscal
+ year to the analogous funds in the subsequent fiscal year and it deactivates
+ funds for the selected fiscal year. Additionally, for all funds that have
+ the "Rollover" setting enabled, this process will move all unspent money to
+ the analogous fund in the subsequent fiscal year.
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td>Context Org Unit:</td>
+ <td><span id='oils-acq-rollover-ctxt-org'></span></td>
+ </tr>
+ <tr>
+ <td>Include Funds for Descendant Org Units:</td>
+ <td><input dojoType=dijit.form.CheckBox name='child_orgs'/></td>
+ </tr>
+ <tr>
+ <td><label for="dry_run">Dry Run: </label></td>
+ <td>
+ <input dojoType="dijit.form.CheckBox" name="dry_run" checked='checked'> </input>
+ </td>
+ </tr>
+ <tr>
+ <td colspan='2'>
+ <div style='width:400px;'>
+ When Dry Run is selected, the system will generate a summary of
+ the changes that would occur during the selected operation(s).
+ No data will be changed.
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan='2' align='center'>
+ <button dojoType=dijit.form.Button type="submit">Process</button>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ </td>
+ </tr>
+</table>
+
+<div class="oils-acq-basic-roomy">
+ <span>Context Org Unit</span>
+ <select
+ dojoType="openils.widget.OrgUnitFilteringSelect"
+ jsId="contextOrgSelector"
+ searchAttr="shortname"
+ labelAttr="shortname">
+ </select>
+
+ <span>Year</span>
+ <select dojoType="dijit.form.FilteringSelect"
+ jsId="fundFilterYearSelect"
+ labelAttr="year"
+ searchAttr="year">
+ </select>
+
+ <div dojoType='dijit.form.Button' jsId='refreshButton'>Refresh</div>
+</div>
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+ <div id='acq-fund-list-rollover-summary-wrapper'>
+ <div id='acq-fund-list-rollover-summary' class='hidden'>
+ <div id='acq-fund-list-rollover-summary-header'> </div>
+ <ul>
+ <li id='acq-fund-list-rollover-summary-dry-run'>These changes have <span class='oils-notify-text'>not</span> been committed yet.</li>
+ <li id='acq-fund-list-rollover-summary-funds'></li>
+ <li id='acq-fund-list-rollover-summary-rollover-amount'></li>
+ </ul>
+ </div>
+ </div>
+</div>
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+ <table jsId="lfGrid"
+ dojoType="openils.widget.AutoGrid"
+ fieldOrder="['id', 'name', 'code', 'year', 'org', 'currency_type', 'combined_balance']"
+ requiredFields="['name', 'code', 'year', 'org', 'currency_type']"
+ query="{id: '*'}"
+ defaultCellWidth='"auto"'
+ fmClass='acqf'
+ showPaginator='true'
+ editOnEnter='true'>
+ <thead>
+ <tr>
+ <th field="name" get="getFundName" formatter="formatName"></th>
+ <th field="combined_balance" name="Combined Balance" get="getBalanceInfo"></th>
+ </tr>
+ </thead>
+ </table>
+</div>
+<div dojoType="openils.widget.ProgressDialog" jsId="progressDialog"></div>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/financial/list_funds.js'> </script>
+[% END %]
--- /dev/null
+[% WRAPPER 'base.tt2' %]
+<script type="text/javascript"> var fundID = [% ctx.page_args.0 %] </script>
+
+<div id='oils-acq-list-header' class='container'>
+ <div id='oils-acq-list-header-label'>Fund Details</div>
+</div>
+
+<div class='oils-acq-actions-div' style='margin:8px;'> <!-- XXX CSS -->
+ <!-- Dropdown menu for creating a new funding source credit -->
+ <div dojoType="dijit.form.DropDownButton">
+ <span>Create Allocation</span>
+ <div dojoType="dijit.TooltipDialog" execute="createAllocation(arguments[0]);">
+ <script type='dojo/connect' event='onOpen'>
+ openils.acq.FundingSource.createStore(
+ function(store) {
+ fundingSourceSelector.store =
+ new dojo.data.ItemFileReadStore({data:store});
+ fundingSourceSelector.setValue(store.items[0].code);
+ },
+ 'MANAGE_FUNDING_SOURCE'
+ );
+ </script>
+ <table class='dijitTooltipTable'>
+ <tr>
+ <td><label for="amount">Funding Source: </label></td>
+ <td>
+ <input jsId='fundingSourceSelector' name="funding_source"
+ dojoType="dijit.form.FilteringSelect" searchAttr='code' labelAttr='code'>
+ </input>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="amount">Amount: </label></td>
+ <td>
+ <input dojoType="dijit.form.CurrencyTextBox" name="amount"> </input>
+ </td>
+ </tr>
+
+ <!-- Percent-based allocations are not supported. Will implement or remove later.
+ <tr>
+ <td><label for="amount">Percent: </label></td>
+ <td>
+ <input
+ dojoType="dijit.form.NumberTextBox"
+ constraints="{min:0,max:100}"
+ promptMessage="Please enter an amount between 0 and 100"
+ name="percent">
+ </input>
+ </td>
+ </tr>
+ -->
+
+ <tr>
+ <td><label for="note">Note: </label></td>
+ <td>
+ <input dojoType="dijit.form.TextBox" name="note"> </input>
+ </td>
+ </tr>
+ <tr>
+ <td colspan='2' align='center'>
+ <button dojoType="dijit.form.Button" type="submit">Apply</button>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div dojoType="dijit.form.DropDownButton">
+ <span>Transfer Money</span>
+ <div jsId="xferDialog" dojoType="dijit.TooltipDialog">
+ <script type="dojo/connect" event="onOpen">
+ /* If a fund is selected (from a previous time that the
+ user popped open this dialog), unselect it. Wouldn't want to
+ accidentally encourage a transfer that the user didn't mean. */
+ xferManager.clearFundSelector();
+ xferManager.setFundName(fund);
+ </script>
+ <table id="oils-acq-fund-xfer-table">
+ <tr>
+ <th>
+ <label for="oils-acq-fund-xfer-o-amount">
+ Source amount<br />
+ <em>Amount to transfer from<br />
+ <span id="oils-acq-fund-xfer-name-fund"></span>
+ </em>
+ </label>
+ </th>
+ <td>
+ <input dojoType="dijit.form.CurrencyTextBox"
+ id="oils-acq-fund-xfer-o-amount"
+ name="o_amount" />
+ </td>
+ </tr>
+ <tr>
+ <th>
+ <label for="oils-acq-fund-xfer-d-selector">
+ Destination fund
+ </label>
+ </th>
+ <td>
+ <span id="oils-acq-fund-xfer-d-selector"></span>
+ </td>
+ </tr>
+ <tr id="oils-acq-fund-xfer-dest-amount" class="hidden">
+ <th>
+ <label for="oils-acq-fund-xfer-d-selector">
+ Destination amount
+ </label>
+ </th>
+ <td>
+ <div class="oils-acq-basic-roomy">
+ <input id="oils-acq-fund-xfer-same-o-d"
+ dojoType="dijit.form.CheckBox" checked="checked"
+ value="1" name="same_o_d" />
+ <label for="oils-acq-fund-xfer-same-o-d">
+ Same as source amount?
+ </label>
+ </div>
+ <div class="oils-acq-basic-roomy">
+ <input id="oils-acq-fund-xfer-d-amount"
+ dojoType="dijit.form.CurrencyTextBox"
+ name="d_amount" disabled="disabled" />
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <th>
+ <label for="oils-acq-fund-xfer-note">Note</label>
+ </th>
+ <td>
+ <input dojoType="dijit.form.TextBox" name="note"
+ id="oils-acq-fund-xfer-note" />
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" id="oils-acq-fund-xfer-submit-row">
+ <button onclick="xferManager.submit();"
+ dojoType="dijit.form.Button" type="submit">
+ Transfer
+ </button>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+</div>
+
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="top">
+ <div dojoType="dijit.layout.TabContainer">
+
+ <!-- Fund Summary -->
+ <div dojoType="dijit.layout.ContentPane"
+ class='oils-acq-detail-content-pane' title="Summary" selected='true'>
+
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="top">
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="client" style='height:600px;'>
+ <table jsId="fundGrid" dojoType="dojox.grid.DataGrid" query="{id: '*'}" rowSelector='20px'>
+ <thead>
+ <tr>
+ <th field="id">ID</th>
+ <th field="name">Name</th>
+ <th field="code">Code</th>
+ <th field="currency_type">Currency Type</th>
+ <th field="org" get='getOrgInfo'>Owner</th>
+ <th field="combined_balance" get='getSummaryInfo'>Balance</th>
+ <th field="allocation_total" get='getSummaryInfo'>Total Allocated</th>
+ <th field="spent_balance" get='getSummaryInfo'>Spent Balance</th>
+ <th field="debit_total" get='getSummaryInfo'>Total Debits</th>
+ <th field="spent_total" get='getSummaryInfo'>Total Spent</th>
+ <th field="encumbrance_total" get='getSummaryInfo'>Total Encumbered</th>
+ </tr>
+ </thead>
+ </table>
+ </div>
+ </div>
+ </div>
+
+ <!-- Fund Allocations -->
+ <div dojoType="dijit.layout.ContentPane" class='oils-acq-detail-content-pane' title="Allocations">
+ <script type='dojo/connect' event='onShow'>loadAllocationGrid();</script>
+
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="top">
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+
+ <table
+ jsId="fundAllocationGrid"
+ autoHeight='true'
+ dojoType="openils.widget.AutoGrid"
+ fieldOrder="['funding_source', 'amount', 'create_time', 'allocator', 'note']"
+ suppressFields="['id', 'fund']"
+ defaultCellWidth='"auto"'
+ fmClass="acqfa"
+ query="{id: '*'}"
+ showPaginator='true'>
+
+ <thead>
+ <tr>
+ <th field='funding_source' get='getFundingSource' formatter='formatFundingSource'/>
+ </tr>
+ </thead>
+ </table>
+ </div>
+ </div>
+ </div>
+
+ <!--- Fund Debits -->
+ <div dojoType="dijit.layout.ContentPane" class='oils-acq-detail-content-pane' title="Debits">
+ <script type='dojo/connect' event='onShow'>loadDebitGrid();</script>
+
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="top" style='height:600px;'>
+ <button dojoType="dijit.form.Button" onClick="fundDebitGrid.refresh();">Refresh Grid</button>
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+
+ <table
+ jsId="fundDebitGrid"
+ autoHeight='true'
+ dojoType="openils.widget.AutoGrid"
+ fieldOrder="['amount', 'encumbrance', 'debit_type', 'origin_amount', 'origin_currency_type']"
+ suppressFields="['id', 'fund']"
+ defaultCellWidth='"auto"'
+ fmClass="acqfdeb"
+ query="{id: '*'}"
+ showPaginator='true'>
+ </table>
+ </div>
+ </div>
+ </div>
+
+ <div dojoType="dijit.layout.ContentPane" class="oils-acq-detail-content-pane" title="Tags">
+ <script type="dojo/connect" event="onShow">
+ tagManager.displayFund(fund);
+ </script>
+ <div id="oils-acq-tag-manager-display"></div>
+ <div id="oils-acq-tag-manager-add">
+ <div dojoType="dijit.form.DropDownButton">
+ <span>Add Tag</span>
+ <div dojoType="dijit.TooltipDialog">
+ <select dojoType="dijit.form.FilteringSelect"
+ jsId="tagSelector">
+ </select>
+ <button onclick="tagManager.addMapping(
+ fund, new acqft().fromStoreItem(tagSelector.item)
+ );" type="submit" dojoType="dijit.form.Button">
+ Add
+ </button>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
+<!-- load the page-specific JS -->
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/common/tag_manager.js"></script>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/financial/view_fund.js'></script>
+
+[% END %]
--- /dev/null
+[% WRAPPER 'base.tt2' %]
+<script type="text/javascript"> var fundingSourceID = [% ctx.page_args.0 %]; </script>
+
+<div id='oils-acq-list-header' class='container'>
+ <div id='oils-acq-list-header-label'>Funding Source Details</div>
+</div>
+
+<div class='oils-acq-actions-div' style='margin:8px;'> <!-- XXX CSS -->
+
+ <!-- Dropdown menu for creating a new funding source credit -->
+ <div dojoType="dijit.form.DropDownButton">
+ <span>Apply Credit</span>
+ <div dojoType="dijit.TooltipDialog" execute="applyFSCredit(arguments[0]);">
+ <table class='dijitTooltipTable'>
+ <tr>
+ <td><label for="amount">Amount: </label></td>
+ <td>
+ <input dojoType="dijit.form.CurrencyTextBox" name="amount"> </input>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="note">Note: </label></td>
+ <td>
+ <input dojoType="dijit.form.TextBox" name="note"> </input>
+ </td>
+ </tr>
+ <tr>
+ <td colspan='2' align='center'>
+ <button dojoType=dijit.form.Button type="submit">Apply</button>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div dojoType="dijit.form.DropDownButton">
+ <span>Allocate to Fund</span>
+ <div dojoType="dijit.TooltipDialog" execute="applyFSAllocation(arguments[0]);">
+ <script type='dojo/connect' event='onOpen'>
+ openils.acq.Fund.createStore(
+ function(store) {
+ fundingSourceFundSelector.store =
+ new dojo.data.ItemFileReadStore({data:store});
+ fundingSourceFundSelector.setValue(store.items[0].code);
+ }, 'MANAGE_FUND'
+ );
+ </script>
+ <table class='dijitTooltipTable'>
+ <tr>
+ <td><label for="amount">Fund: </label></td>
+ <td>
+ <input jsId='fundingSourceFundSelector' name="fund"
+ dojoType="dijit.form.FilteringSelect" searchAttr='code' labelAttr='code'>
+ </input>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="amount">Amount: </label></td>
+ <td>
+ <input dojoType="dijit.form.CurrencyTextBox" name="amount"> </input>
+ </td>
+ </tr>
+ <!-- Percent-based allocations are not supported. Will implement or remove later.
+ <tr>
+ <td><label for="amount">Percent: </label></td>
+ <td>
+ <input
+ dojoType="dijit.form.NumberTextBox"
+ constraints="{min:0,max:100}"
+ promptMessage="Please enter an amount between 0 and 100"
+ name="percent">
+ </input>
+ </td>
+ </tr>
+ -->
+ <tr>
+ <td><label for="note">Note: </label></td>
+ <td>
+ <input dojoType="dijit.form.TextBox" name="note"> </input>
+ </td>
+ </tr>
+ <tr>
+ <td colspan='2' align='center'>
+ <button dojoType=dijit.form.Button type="submit">Apply</button>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+</div>
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="top">
+ <div dojoType="dijit.layout.TabContainer">
+
+ <div dojoType="dijit.layout.ContentPane" class='oils-acq-detail-content-pane' title="Summary" selected='true'>
+ <script type='dojo/connect' event='onShow'>loadFSGrid();</script>
+
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="top">
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="client" style='height:600px;'>
+ <table jsId="fundingSourceGrid" dojoType="dojox.grid.DataGrid" query="{id: '*'}" rowSelector='20px'>
+ <thead>
+ <tr>
+ <th field="id">ID</th>
+ <th field="name" width='auto'>Name</th>
+ <th field="code">Code</th>
+ <th field="balance" get='getSummaryInfo'>Balance</th>
+ <th field="credit_total" get='getSummaryInfo'>Total Credits</th>
+ <th field="allocation_total" get='getSummaryInfo'>Total Debits</th>
+ <th field="currency_type">Currency Type</th>
+ <th field="owner" width='auto' get='getOrgInfo'>Owner</th>
+ </tr>
+ </thead>
+ </table>
+ </div>
+ </div>
+ </div>
+
+ <div dojoType="dijit.layout.ContentPane" class='oils-acq-detail-content-pane' title="Credits">
+ <script type='dojo/connect' event='onShow'>loadCreditGrid(); </script>
+
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="top">
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+
+ <table
+ jsId="fsCreditGrid"
+ autoheight="true"
+ dojoType="openils.widget.AutoGrid"
+ fieldOrder="['amount', 'effective_date', 'deadline_date', 'note']"
+ suppressFields="['id', 'funding_source']"
+ defaultCellWidth='"auto"'
+ fmClass="acqfscred"
+ query="{id: '*'}"
+ showPaginator='true'>
+ </table>
+ </div>
+ </div>
+ </div>
+
+ <!-- Fund Allocations -->
+ <div dojoType="dijit.layout.ContentPane" class='oils-acq-detail-content-pane' title="Allocations">
+ <script type='dojo/connect' event='onShow'>loadAllocationGrid();</script>
+
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="top">
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+
+ <table
+ jsId="fsAllocationGrid"
+ autoHeight='true'
+ dojoType="openils.widget.AutoGrid"
+ fieldOrder="['fund', 'amount', 'create_time', 'allocator', 'note']"
+ suppressFields="['id', 'funding_source']"
+ defaultCellWidth='"auto"'
+ fmClass="acqfa"
+ query="{id: '*'}"
+ showPaginator='true'>
+
+ <thead>
+ <tr>
+ <th field='fund' get='getFund' formatter='formatFund'/>
+ </tr>
+ </thead>
+ </table>
+ </div>
+ </div>
+ </div>
+
+ </div>
+</div>
+
+<!-- load the page-specific JS -->
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/financial/view_funding_source.js'> </script>
+
+[% END %]
+
--- /dev/null
+[% WRAPPER base.tt2 %]
+<script type="text/javascript">var providerId = [% ctx.page_args.0 %]</script>
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="top">
+ <div dojoType="dijit.layout.TabContainer">
+
+ <div dojoType="dijit.layout.ContentPane"
+ class='oils-acq-detail-content-pane' title="Summary" selected='true' style='height:400px;'>
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="top">
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="client" style='height:600px;'>
+ <table jsId="providerGrid" dojoType="dojox.grid.DataGrid" query="{id: '*'}" rowSelector='20px'>
+ <thead>
+ <tr>
+ <th field="id">ID</th>
+ <th field="name" width='auto'>Name</th>
+ <th field="code">Code</th>
+ <th field="owner" get='getOrgInfo'>Owner</th>
+ <th field="currency_type">Currency Type</th>
+ </tr>
+ </thead>
+ </table>
+ </div>
+ </div>
+ </div>
+
+ <div dojoType="dijit.layout.ContentPane"
+ class='oils-acq-detail-content-pane' title="Order Record Format" style='height:400px;'>
+
+ <div class='oils-acq-actions-div' style='margin:8px;'>
+
+ <!--
+ Dropdown menu for creating a new order record data type
+ -->
+ <div dojoType="dijit.form.DropDownButton">
+ <span>Create Order Record Field</span>
+ <div dojoType="dijit.TooltipDialog" execute="createOrderRecordField(arguments[0]);">
+ <script type='dojo/connect' event='onOpen'>setORDesc();</script>
+ <table class='dijitTooltipTable'>
+ <tr>
+ <td><label for="code">Code: </label></td>
+ <td>
+ <select id='oils-acq-provider-or-code' name="code" dojoType="dijit.form.ComboBox">
+ <script type='dojo/connect' event='onChange'>setORDesc();</script>
+ <option value='fund_code'>Fund Code</option>
+ <option value='shelving_location'>Shelving Location</option>
+ <option value='quantity'>Quantity</option>
+ <option value='order_date'>Order Date</option>
+ <option value='volume_count'>Volume Count </option>
+ <option value='currency_type'>Currency Type</option>
+ <option value='internal_notes'>Internal Notes </option>
+ <option value='vendor_notes'>Vendor Notes</option>
+ <option value='estimated_price'>Estimated Price</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="description">Description: </label></td>
+ <td><input id='oils-acq-provider-or-desc' dojoType="dijit.form.TextBox" name="description"> </input></td>
+ </tr>
+ <tr>
+ <td><label for="amount">Tag: </label></td>
+ <td><input dojoType="dijit.form.TextBox" name="tag"></input></td>
+ </tr>
+ <tr>
+ <td><label for="amount">Subfield: </label></td>
+ <td><input dojoType="dijit.form.TextBox" name="subfield"></input></td>
+ </tr>
+ <tr>
+ <td><label for="ident">Identifer Field?: </label></td>
+ <td>
+ <select dojoType="dijit.form.FilteringSelect" name="ident">
+ <option value='f' selected='selected'>False</option>
+ <option value='t'>True</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="amount">XPath (advanced): </label></td>
+ <td><input dojoType="dijit.form.TextBox" name="xpath"></input></td>
+ </tr>
+ <tr>
+ <td colspan='2' align='center'>
+ <button dojoType='dijit.form.Button' type="submit">Apply</button>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+
+ <!--
+ Delete order record data types button
+ -->
+ <button dojoType="dijit.form.Button" onclick='deleteORDataFields();'>
+ Delete Selected
+ </button>
+ </div>
+
+ <script type='dojo/connect' event='onShow'>loadPADGrid();</script>
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="top">
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="client" style='height:600px;'>
+ <table jsId="padGrid" dojoType="dojox.grid.DataGrid" query="{id: '*'}" rowSelector='20px'>
+ <thead>
+ <tr>
+ <th field="id">ID</th>
+ <th field="code" width='auto'>Code</th>
+ <th field="description" width='auto'>Description</th>
+ <th field="tag" get='getTag'>Tag</th>
+ <th field="subfield" get='getSubfield'>Subfield</th>
+ <th field="xpath" width='auto'>XPath</th>
+ </tr>
+ </thead>
+ </table>
+ </div>
+ </div>
+ </div>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/financial/view_provider.js'></script>
+[% END %]
+
--- /dev/null
+[% WRAPPER 'base.tt2' %]
+[% ctx.page_title = 'Invoicing' %]
+<script type="text/javascript">var invoiceId = '[% ctx.page_args.0 %]';</script>
+<div dojoType="dijit.layout.ContentPane" style="height:100%">
+
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="client" class='oils-header-panel'>
+ <div> Invoice </div>
+ <div> </div>
+ </div>
+
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+ <div id='acq-view-invoice-div'/>
+ </div>
+
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+ <table class='oils-acq-invoice-table'>
+ <thead/>
+ <tbody id='acq-invoice-entry-header' class='hidden'>
+ <tr>
+ <td colspan='0'>
+ <h3>Bibliographic Items</h3>
+ </td>
+ </tr>
+ </tbody>
+ <!-- acq.invoice_entry -->
+ <thead id='acq-invoice-entry-thead' class='hidden'>
+ <tr>
+ <th colspan='2'>Title Details</th>
+ <th class='acq-invoice-center-col'># Invoiced / # Paid</th>
+ <th class='acq-invoice-center-col'>Billed</th>
+ <th class='acq-invoice-paid-col'>Paid</th>
+ <th class='acq-invoice-center-col hide-complete'>Detach</th>
+ </tr>
+ </thead>
+ <tbody id='acq-invoice-entry-tbody' class='hidden'>
+ <tr id='acq-invoice-entry-template' class='acq-invoice-row'>
+ <td colspan='2'>
+ <div name='title_details'></div>
+ <div name='note'></div>
+ </td>
+ <td class='acq-invoice-center-col'>
+ <span name='inv_item_count'></span> / <span name='phys_item_count'></span>
+ </td>
+ <td class='acq-invoice-billed-col'><div name='cost_billed'/></td>
+ <td class='acq-invoice-paid-col'><div name='amount_paid'/></td>
+ <td class='acq-invoice-center-col hide-complete'><a href='javascript:void(0);' name='detach'>Detach</a></td>
+ </tr>
+ </tbody>
+ <tbody>
+ <tr>
+ <td style='margin-top:15px;' colspan='0'>
+ <h3>Direct Charges, Taxes, Fees, etc.</h3>
+ </td>
+ </tr>
+ </tbody>
+ <!-- acq.invoice_item -->
+ <thead>
+ <tr>
+ <th>Charge Type</th>
+ <th class='acq-invoice-center-col'>Fund</th>
+ <th>Title/Description</th>
+ <th class='acq-invoice-center-col'>Billed</th>
+ <th class='acq-invoice-paid-col'>Paid</th>
+ <th class='acq-invoice-center-col hide-complete'>Delete</th>
+ </tr>
+ </thead>
+ <tbody id='acq-invoice-item-tbody'>
+ <tr id='acq-invoice-item-template' class='acq-invoice-row acq-invoice-item-row'>
+ <td><div name='inv_item_type'/></td>
+ <td class='acq-invoice-center-col'><div name='fund'/></td>
+ <td><div name='title'/></td>
+ <td class='acq-invoice-center-col' class='acq-invoice-billed-col'><div name='cost_billed'/></td>
+ <td class='acq-invoice-paid-col'><div name='amount_paid'/></td>
+ <td class='acq-invoice-center-col hide-complete'><a href='javascript:void(0);' name='delete'>Delete</a></td>
+ </tr>
+ </tbody>
+ <tbody class='hide-complete'>
+ <tr>
+ <td colspan='0'>
+ <a href='javascript:void(0);' id='acq-invoice-new-item'>Add Charge...</a>
+ </td>
+ </tr>
+ </tbody>
+ <tbody>
+ <tr>
+ <td style='margin-top:15px;' colspan='0'>
+ <h3> </h3>
+ </td>
+ </tr>
+ </tbody>
+ <thead>
+ <tr>
+ <th colspan='3'/>
+ <th class='acq-invoice-center-col' class='acq-invoice-billed-col'>Total</th>
+ <th class='acq-invoice-paid-col'>Total</th>
+ <th class='acq-invoice-center-col' class='acq-invoice-balance-col'>Balance</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td colspan='3' style='text-align:right;'>
+ <button jsId='invoiceSaveButton' class='hide-complete'
+ dojoType='dijit.form.Button' onclick='saveChanges();'>Save</button>
+ <button jsId='invoiceProrateButton' class='hide-complete'
+ dojoType='dijit.form.Button' onclick='saveChanges(true);'>Save & Prorate</button>
+ <button jsId='invoiceCloseButton' class='hide-complete'
+ dojoType='dijit.form.Button' onclick='saveChanges(false, true);'>Save & Close</button>
+ <span class='hidden' id='acq-invoice-reopen-button-wrapper'>
+ <button jsId='invoiceReopenButton'
+ dojoType='dijit.form.Button' onclick='saveChanges(false, false, true);'>Reopen Invoice</button>
+ </span>
+ </td>
+ <td class='acq-invoice-center-col'><div jsId='totalInvoicedBox' dojoType='dijit.form.CurrencyTextBox' style='width:9em;'/></td>
+ <td class='acq-invoice-paid-col'><div jsId='totalPaidBox' dojoType='dijit.form.CurrencyTextBox' style='width:9em;'/></td>
+ <td class='acq-invoice-center-col'><div jsId='balanceOwedBox' dojoType='dijit.form.CurrencyTextBox' style='width:9em;'/></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+</div>
+<div dojoType='openils.widget.ProgressDialog' jsId='progressDialog'/>
+<div jsId='extraItemsDialog' dojoType="dijit.Dialog" title="Extra Items">
+ <div dojoType="dijit.layout.ContentPane" style='text-align:center;'>
+ <div id='acq-invoice-extra-copies-message'></div>
+ <br/>
+ Select a fund for the new items: <div id='acq-invoice-extra-copies-fund'></div>
+ <br/><br/>
+ <br/><br/>
+ <span style='padding-right: 10px;'>
+ <button dojoType='dijit.form.Button' jsId='extraCopiesCancel'>Cancel</button>
+ </span>
+ <button dojoType='dijit.form.Button' jsId='extraCopiesGo'>Add New Items</button>
+ </div>
+</div>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/invoice/common.js'> </script>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/invoice/view.js'> </script>
+[% END %]
--- /dev/null
+[% WRAPPER "base.tt2" %]
+[% ctx.page_title = "Locate Bib Record" %]
+<script type="text/javascript">
+ function iterateSubfields(item) {
+ var out = '';
+ dojo.query('subfield', item).forEach(
+ function(item) { out += item.textContent + ' '; } );
+ return out;
+ }
+</script>
+
+<div id='acq-findbib-search' style='margin:30px; border:1px solid #333; text-align:center;'>
+ <input dojoType='dijit.form.TextBox' jsId='searchQuery' style='width:500px;'></input>
+ <button dojoType='dijit.form.Button' onclick='doSearch'>Search</button>
+</div>
+
+<div style='width:100%; ' id='acq-findbib-container'>
+ <div id='acq-findbib-template' style='border-bottom:1px solid #333; padding:10px;'>
+ <div style='font-weight:bold;'>
+ <div type='opac/slot-data' query='datafield[tag=245]'>
+ <script type='opac/slot-format'>return iterateSubfields(item)</script>
+ </div>
+ </div>
+ <div style='margin-left:20px;'>
+ <div>
+ <div type='opac/slot-data' query='datafield[tag=100]'>
+ <script type='opac/slot-format'>return iterateSubfields(item)</script>
+ </div>
+ </div>
+ <div>
+ <span><a name='view-marc' href='javascript:void(0);'>View MARC</a></span>
+ <span><a name='select-rec' href='javascript:void(0);'>Select</a></span>
+ <span type='opac/slot-data' query='datafield[tag=020]'>
+ <script type='opac/slot-format'>return iterateSubfields(item)</script>
+ </span>
+ <span type='opac/slot-data' query='datafield[tag=024]'>
+ <script type='opac/slot-format'>return iterateSubfields(item)</script>
+ </span>
+ <span type='opac/slot-data' query='datafield[tag=022]'>
+ <script type='opac/slot-format'>return iterateSubfields(item)</script>
+ </span>
+ <span type='opac/slot-data' query='datafield[tag=260] subfield[code=c]'></span>
+ </div>
+ </div>
+ </div>
+</div>
+
+<style>
+ #marc-div {
+ position: fixed;
+ top:100px;
+ right:10px;
+ left:200px;
+ bottom:100px;
+ border: 3px solid #333;
+ -moz-border-radius: 5px;
+ padding: 30px;
+ text-align:center;
+ background: #FFF;
+ overflow: auto;
+ }
+</style>
+
+<div id='marc-div' class='hidden'>
+ <button dojoType='dijit.form.Button' onclick='openils.Util.hide("marc-div");'>Hide</button>
+ <div style='text-align:left;'>
+ <div id='marc-html-div'/>
+ </div>
+</div>
+<div jsId='progressDialog' dojoType='openils.widget.ProgressDialog' message='Searching....'/>
+
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/lineitem/findbib.js"></script>
+[% END %]
--- /dev/null
+[% WRAPPER "base.tt2" %]
+[% ctx.page_title = "Lineitem History" %]
+<h1>Lineitem History</h1>
+<br/>
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+ <table jsId="lhGrid"
+ autoHeight='true'
+ dojoType="openils.widget.AutoGrid"
+ defaultCellWidth="'auto'"
+ fieldOrder="['audit_time', 'state', 'picklist', 'purchase_order', 'provider', 'estimated_unit_price', 'claim_policy', 'create_time', 'edit_time', 'creator', 'editor', 'selector']"
+ query="{audit_id: '*'}"
+ suppressFields='["id", "audit_id", "marc", "audit_action"]'
+ fmClass='acqlih'
+ editOnEnter='true'
+ editReadOnly='true'
+ showPaginator='true'>
+ </table>
+</div>
+
+<script type="text/javascript">
+ dojo.require('openils.Util');
+ dojo.require('openils.widget.AutoGrid');
+ var liId = "[% ctx.page_args.0 %]";
+ openils.Util.addOnLoad(
+ function() {
+ lhGrid.loadAll({order_by : {acqlih : 'audit_time DESC'}}, {id : liId});
+ }
+ );
+</script>
+[% END %]
--- /dev/null
+[% WRAPPER "base.tt2" %]
+[% ctx.page_title = "Related Lineitems" %]
+<script type="text/javascript">var targetId = "[% ctx.page_args.0 %]";</script>
+<h1>Related Lineitems</h1>
+<div id="acq-related-mini">
+ <script type="text/javascript">
+ function iterateSubfields(item) {
+ var out = '';
+ dojo.query('subfield', item).forEach(
+ function(item) { out += item.textContent + ' '; } );
+ return out;
+ }
+ </script>
+ <ul id="acq-related-mini-display">
+ <li>
+ <div type='opac/slot-data' query='datafield[tag=245]'>
+ <script type='opac/slot-format'>return iterateSubfields(item)</script>
+ </div>
+ </li>
+ <li>
+ <div type='opac/slot-data' query='datafield[tag=100] subfield[code=a]'/>
+ </li>
+ <li>
+ <div type='opac/slot-data' query='datafield[tag=020]'>
+ <script type='opac/slot-format'>return iterateSubfields(item)</script>
+ </div>
+ <div type='opac/slot-data' query='datafield[tag=024]'>
+ <script type='opac/slot-format'>return iterateSubfields(item)</script>
+ </div>
+ <div type='opac/slot-data' query='datafield[tag=022]'>
+ <script type='opac/slot-format'>return iterateSubfields(item)</script>
+ </div>
+ </li>
+ <li>
+ <div type='opac/slot-data' query='datafield[tag=260] subfield[code=c]'/>
+ </li>
+ </ul>
+
+ <div id="acq-related-li-create-holder">
+ <button jsId="addToPlButton" dojoType="dijit.form.Button">
+ Add to Selection List
+ </button>
+ <button jsId="addToPoButton" dojoType="dijit.form.Button">
+ Add to Purchase Order
+ </button>
+ <button jsId="createPoButton" dojoType="dijit.form.Button">
+ Create Purchase Order
+ </button>
+ </div>
+
+ <div class="hidden">
+ <div dojoType="dijit.Dialog" jsId='addToPoDialog'>
+ <table class='dijitTooltipTable'>
+ <tr>
+ <td><label>Enter the PO #: </label></td>
+ <td><input jsId='addToPoInput' dojoType="dijit.form.TextBox" /></td>
+ </tr>
+ <tr>
+ <td colspan='2' align='center'>
+ <button dojoType='dijit.form.Button' jsId='addToPoSave' type="submit">Save</button>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+
+</div>
+[% INCLUDE "acq/common/info.tt2" which = "Related" %]
+[% INCLUDE "acq/common/li_table.tt2" %]
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/lineitem/related.js"></script>
+[% END %]
--- /dev/null
+[% WRAPPER 'base.tt2' %]
+[% ctx.page_title = 'Lineitem Search' %]
+<!-- later: "[% ctx.page_args.0 %]" -->
+<div id="oils-acq-li-search-form-holder" class="hidden">
+ <h1 class="oils-acq-li-search">Lineitem Search</h1>
+ <form dojoType="dijit.form.Form" action="" method=""
+ id="oils-acq-li-search-form" jsId="searchForm">
+ <script type="dojo/method" event="onSubmit">
+ doSearch(this.getValues());
+ return false; /* no redirect */
+ </script>
+
+ <div class="oils-acq-li-search-form-row">
+ <label class="oils-acq-li-search" for="state_selector">
+ Lineitem state
+ </label>
+ <input class="oils-acq-li-search" name="state"
+ dojoType="dijit.form.FilteringSelect" required="false"
+ id="state_selector" jsId="stateSelector"
+ labelAttr="description" searchAttr="description"
+ />
+ <label class="oils-acq-li-search" for="agency_selector">
+ PO ordering agency
+ </label>
+ <input class="oils-acq-li-search" id="agency_selector" />
+ </div>
+ <div class="oils-acq-li-search-form-row">
+ <input class="oils-acq-li-search" dojoType="dijit.form.RadioButton"
+ name="attr_search_type" jsId="attrSearchTypeNone"
+ id="attr_search_type_none" value="none" checked="checked"
+ onChange="toggleAttrSearchType(this.value, this.checked);" />
+ <label for="attr_search_type_none" class="oils-acq-li-search">
+ No further attributes to search by
+ </label>
+ </div>
+ <div class="oils-acq-li-search-form-row">
+ <!-- the "style" attribute on this input seems to be necessary as
+ I can't get the same effect from CSS for some reason -->
+ <input class="oils-acq-li-search" dojoType="dijit.form.RadioButton"
+ name="attr_search_type" jsId="attrSearchTypeScalar"
+ id="attr_search_type_scalar" value="scalar"
+ style="vertical-align: top;"
+ onChange="toggleAttrSearchType(this.value, this.checked);" />
+ <label for="attr_search_type_scalar" class="oils-acq-li-search">
+ Search by attribute values
+ </label>
+ <div id="oils-acq-li-search-attr-scalar" class="hidden">
+<!-- <div class="oils-acq-li-search-conjunction">
+ <em>Show results for which:</em><br />
+ <input dojoType="dijit.form.RadioButton"
+ id="scalar_search_conjuction_or"
+ name="scalar_search_conjunction" value="or"
+ checked="checked" class="oils-acq-li-search" />
+ <label for="scalar_search_conjuction_or"
+ class="oils-acq-li-search">ANY of the following terms match</label>
+ <br />
+ <input dojoType="dijit.form.RadioButton"
+ id="scalar_search_conjuction_and"
+ name="scalar_search_conjunction" value="and"
+ class="oils-acq-li-search" />
+ <label for="scalar_search_conjuction_and"
+ class="oils-acq-li-search">ALL of the following terms match</label>
+ </div> -->
+ <div class="oils-acq-li-search-scalar hidden"
+ id="oils-acq-li-search-scalar-template">
+ <input class="oils-acq-li-search" name="def" />
+ <input class="oils-acq-li-search" name="value" />
+ <a class="oils-acq-li-search" title="Remove this row"
+ href="javascript:void(0);" />(X)</a>
+ </div>
+ <div id="oils-acq-li-search-scalar-adder">
+ <span dojoType="dijit.form.Button"
+ class="oils-acq-li-search"
+ onclick="scalarAttrSearchManager.add();">
+ Add more search terms
+ </span>
+ <span dojoType="dijit.form.Button"
+ class="oils-acq-li-search"
+ onclick="scalarAttrSearchManager.newBrief();">
+ New brief record like this
+ </span>
+ </div>
+ </div>
+ </div>
+ <div class="oils-acq-li-search-form-row">
+ <input class="oils-acq-li-search" dojoType="dijit.form.RadioButton"
+ name="attr_search_type" jsId="attrSearchTypeArray"
+ id="attr_search_type_array" value="array"
+ onChange="toggleAttrSearchType(this.value, this.checked);" />
+ <label for="attr_search_type_array" class="oils-acq-li-search">
+ Provide a file of search terms
+ </label>
+ <div id="oils-acq-li-search-attr-array" class="hidden">
+ <input class="oils-acq-li-search"
+ name="array_def" dojoType="dijit.form.FilteringSelect"
+ jsId="attrArrayDefSelector"
+ labelAttr="description" searchAttr="description" />
+ <span class="oils-acq-li-search">
+ <span id="records-up">0</span> term(s) prepared for search
+ </span>
+ <span class="oils-acq-li-search" dojoType="dijit.form.Button"
+ onClick="loadTermsFromFile();">Add file</span>
+ <span class="oils-acq-li-search" dojoType="dijit.form.Button"
+ onClick="clearTerms();">Clear loaded search terms</span>
+ </div>
+ </div>
+ <div class="oils-acq-li-search-form-row"
+ id="oils-acq-li-search-attr-submit">
+ <span dojoType="dijit.form.Button" type="submit">Search</span>
+ </div>
+ </form>
+</div>
+[% INCLUDE 'acq/common/li_table.tt2' %]
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/lineitem/search.js"></script>
+[% END %]
--- /dev/null
+[% WRAPPER "base.tt2" %]
+[% ctx.page_title = "Lineitem Worksheet" %]
+<script type="text/javascript">var liId = "[% ctx.page_args.0 %]";</script>
+<h1>Lineitem Worksheet</h1>
+<br/>
+<div id="acq-worksheet-contents"></div>
+<div class='hidden'>
+ <div jsId='progressDialog' dojoType='openils.widget.ProgressDialog' message='Loading Worksheet...'/>
+</div>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/lineitem/worksheet.js"></script>
+[% END %]
--- /dev/null
+[% WRAPPER 'base.tt2' %]
+<style type="text/css">
+ @import "[% ctx.media_prefix %]/js/dojo/dojox/form/resources/CheckedMultiSelect.css";
+</style>
+
+<script type="text/javascript">
+ var searchOffset = 0;
+</script>
+
+<div id='oils-acq-search-block' class='container'>
+
+ <form dojoType='dijit.form.Form' action='' method=''>
+ <script type="dojo/method" event="onSubmit">
+ doSearch(this.getValues());
+ return false; /* don't redirect */
+ </script>
+ <div id='oils-acq-search-sources-block'>
+ <div id='oils-acq-search-sources-label'>Search Sources</div>
+ <select style='overflow-y:auto;' id='oils-acq-search-source-select'
+ multiple='true' jsId="bibSourceSelect" dojoType="dojox.form.CheckedMultiSelect">
+ <option selected='selected' value='native-evergreen-catalog'>Evergreen Catalog</option>
+ </select>
+ </div>
+ <div id='oils-acq-search-form-block'>
+ <div id='oils-acq-search-fields-label'>Search Fields</div>
+ <div id='oils-acq-search-fields'>
+ </div>
+ <table>
+ <tbody id='oils-acq-search-fields-tbody'>
+ <tr id='oils-acq-search-fields-template'>
+ <td name='label'> </td>
+ <td name='input'> </td>
+ </tr>
+ <tr id='oils-acq-seach-fields-count-row'>
+ <td name='label'>Hits Per Source</td>
+ <td><input name='limit'
+ dojoType='dijit.form.NumberSpinner'
+ constraints='{min:5,max:50}'
+ value='10'></input>
+ </td>
+ </tr>
+ <tr id='oils-acq-search-fields-submit-block'>
+ <td><div dojoType='dijit.form.Button' type='submit'>Submit</div></td>
+ <td><div dojoType='dijit.form.Button' onclick='clearSearchForm()'>Clear Form</div></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </form>
+</div>
+
+<div id='oils-acq-pl-search-results'>
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="top" class='oils-header-panel'>
+ <div>Search Results</div>
+ <div>
+ <div id='oils-acq-update-li-progress' class='hidden'>
+ <div dojoType="dijit.ProgressBar" style="width:300px" jsId="liUpdateProgress"></div>
+ </div>
+ <div dojoType='dijit.form.Button' onClick='showDiv("oils-acq-search-block");'>New Search</div>
+ </div>
+ </div>
+ <div dojoType='dijit.layout.ContentPane' layoutAlign='client'>
+ [% INCLUDE 'acq/common/li_table.tt2' %]
+ </div>
+</div>
+
+<div id='oils-acq-pl-loading' style='width:100%;margin-top:100px;display:none;text-align:center'>
+ <img src='[% ctx.media_prefix %]/opac/images/progressbar_green.gif'/>
+</div>
+
+<script type="text/javascript">dojo.style('oils-acq-pl-search-results', 'display', 'none');</script>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/picklist/bib_search.js'></script>
+[% END %]
+
--- /dev/null
+[% WRAPPER 'base.tt2' %]
+<h1>New Brief Record</h1><br/>
+<form dojoType='dijit.form.Form'>
+ <script type='dojo/method' event='onSubmit'>
+ return saveBriefRecord(this.getValues());
+ </script>
+ <table class='oils-generic-table'>
+ <tbody id='acq-brief-record-tbody'>
+ <tr id='acq-brief-record-pl-row'>
+ <td>Add To Selection List</td>
+ <td><select dojoType='dijit.form.ComboBox' jsId='plSelector'/></td>
+ </tr>
+ <tr id='acq-brief-record-po-row'>
+ <td>Adding to Purchase Order</td>
+ <td><input dojoType='dijit.form.TextBox' jsId='poNumber' disabled='disabled'/></td>
+ </tr>
+ <tr id='acq-brief-record-row'>
+ <td><div name='name'/></td>
+ <td><div name='widget'/></td>
+ </tr>
+ </tbody>
+ <tbody>
+ <tr>
+ <td><button dojoType='dijit.form.Button' type='submit'>Save Record</button></td>
+ <!--
+ <td><button dojoType='dijit.form.Button' type='submit' jsId='marcEditButton'>Edit MARC</button></td>
+ -->
+ </tr>
+ </tbody>
+ </table>
+</form>
+
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/picklist/brief_record.js'> </script>
+
+[% END %]
--- /dev/null
+[% WRAPPER "base.tt2" %]
+[% ctx.page_title = "Items by Bibliographic ID" %]
+<div id="acq-frombib-upload-box">
+ <div class="oils-acq-basic-roomy">
+ Provide one or more CSV files whose first columns
+ contain Evergreen bibliographic record IDs.
+ </div>
+ <div class="oils-acq-basic-roomy">
+ <span id="acq-frombib-upload"></span>
+ </div>
+ <div id="acq-frombib-begin-holder" class="oils-acq-basic-roomy hidden">
+ <button id="acq-frombib-begin" onclick="beginSearch();">
+ Retrieve records
+ </button>
+ </div>
+</div>
+<div id="acq-frombib-reload-box" class="oils-acq-basic-roomy hidden">
+ <button onclick="location.href=location.href;">Begin a new search</button>
+</div>
+<hr />
+[% INCLUDE "acq/common/li_table_pager.tt2" %]
+[% INCLUDE "acq/common/li_table.tt2" %]
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/picklist/from_bib.js"> </script>
+[% END %]
--- /dev/null
+[% WRAPPER 'base.tt2' %]
+[% ctx.page_title = 'Selection Lists' %]
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+ <div id='oils-acq-list-header' class='container'>
+ <div id='oils-acq-picklist-my-list-header'>
+ <div id='oils-acq-list-header-label'>My Selection Lists</div>
+ </div>
+ </div>
+</div>
+
+<div class='oils-acq-actions-div' dojoType="dijit.layout.ContentPane" layoutAlign="client">
+
+ <div dojoType="dijit.form.DropDownButton">
+ <span>New Selection List</span>
+ <div dojoType="dijit.TooltipDialog" execute="createPL(arguments[0]);">
+ <table class='dijitTooltipTable'>
+ <tr>
+ <td><label for="name">Name:</label></td>
+ <td><input dojoType="dijit.form.TextBox" name="name"/></td>
+ </tr>
+ <tr>
+ <td colspan='2' align='center'>
+ <button dojoType='dijit.form.Button' type="submit">Create</button>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+
+ <div dojoType="dijit.form.DropDownButton">
+ <span>Clone Selected</span>
+ <div dojoType="dijit.TooltipDialog" execute="cloneSelectedPl(arguments[0]);">
+ <table class='dijitTooltipTable'>
+ <tr>
+ <td><label for="name">New Name:</label></td>
+ <td><input dojoType="dijit.form.TextBox" name="name"/></td>
+ </tr>
+ <tr>
+ <td colspan='2' align='center'>
+ <button dojoType='dijit.form.Button' type="submit">Clone</button>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+
+ <div dojoType="dijit.form.DropDownButton">
+ <span>Merge Selected</span>
+ <div dojoType="dijit.TooltipDialog" execute="mergeSelectedPl(arguments[0]);" jsId='plMergeDialog'>
+ <table class='dijitTooltipTable'>
+ <tr>
+ <td><label for="name">Choose the Lead Selection List:</label></td>
+ <td><input jsId='plMergeLeadSelector' dojoType="dijit.form.FilteringSelect" name="lead"/></td>
+ </tr>
+ <tr>
+ <td colspan='2' align='center'>
+ <button dojoType='dijit.form.Button' type="submit">Merge</button>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <button dojoType="dijit.form.Button" onclick="deleteFromGrid();">Delete Selected</button>
+</div>
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+ <table
+ autoHeight='true'
+ jsId="plListGrid"
+ dojoType="openils.widget.AutoGrid"
+ query="{id: '*'}"
+ fieldOrder="['name', 'owner', 'entry_count', 'create_time', 'edit_time']"
+ suppressFields="['editor', 'creator']"
+ query="{id: '*'}"
+ defaultCellWidth='"auto"'
+ fmClass='acqpl'
+ showPaginator='true'
+ editOnEnter='true'>
+ <thead>
+ <tr>
+ <th field="name" formatter='formatName'/>
+ <th field="owner" get='getOwnerName'/>
+ <th field="entry_count">Entry Count</th>
+ </tr>
+ </thead>
+ </table>
+ <div class='hidden'>
+ <div jsId='progressDialog' dojoType='openils.widget.ProgressDialog'/>
+ </div>
+</div>
+
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/picklist/view_list.js'></script>
+
+<script type="text/javascript">
+ function formatName(inDatum) {
+ for(var i in plCache){
+ var pl = plCache[i];
+ var id = pl.id();
+ if (inDatum == pl.name()){
+ return '<a href="[% ctx.base_path %]/acq/picklist/view/'+id+'">'+inDatum+'</a>';
+ }
+ }
+ }
+</script>
+
+[% END %]
--- /dev/null
+[% WRAPPER 'base.tt2' %]
+
+<h1>Upload</h1><br/>
+<form id="acq-pl-upload-form" enctype="multipart/form-data">
+ <input type='hidden' name='ses' id='acq-pl-upload-ses'/>
+ <table class='oils-generic-table'>
+ <tbody>
+ <tr>
+ <td>Create Purchase Order</td>
+ <td>
+ <input dojoType='dijit.form.CheckBox' name='create_po'></input>
+ </td>
+ </tr>
+ <tr>
+ <td>Activate Purchase Order</td>
+ <td>
+ <input dojoType='dijit.form.CheckBox' name='activate_po'></input>
+ </td>
+ </tr>
+ <tr>
+ <!-- XXX CHECK IMPORT PERMS TO ENABLE -->
+ <td>Load Bibs and Items into the ILS</td>
+ <td>
+ <input dojoType='dijit.form.CheckBox' name='create_assets'></input>
+ </td>
+ </tr>
+ <tr>
+ <td>Provider</td>
+ <td><div id='acq-pl-upload-provider'></div></td>
+ </tr>
+ <tr id='acq-pl-upload-agency-row'>
+ <td>Context Org Unit</td>
+ <td><div id='acq-pl-upload-agency'></div></td>
+ </tr>
+ <tr id='acq-pl-upload-picklist'>
+ <td>Add to Selection List</td>
+ <td>
+ <select jsId='acqPlUploadPlSelector' dojoType='dijit.form.ComboBox'></select>
+ </td>
+ </tr>
+ <tr>
+ <td>Records File</td>
+ <td><input size='36' type="file" name="marc_upload"></input></td>
+ </tr>
+ <tr>
+ <td align='center' colspan='2'>
+ <button dojoType="dijit.form.Button" onClick="acqUploadRecords()">Upload</button>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <br/>
+ <br/>
+ <div id="acq-pl-upload-progress" class='hidden'>
+ <div id='acq-pl-upload-progress-bar'>
+ <div dojoType="dijit.ProgressBar" style="width:300px" indeterminate="true"></div>
+ </div>
+ <div>
+ <table class='oils-generic-table'>
+ <tbody>
+ <tr>
+ <td>Lineitems Processed</td>
+ <td><span id='acq-pl-upload-li-processed'>0</span></td>
+ </tr>
+ <tr>
+ <td>Items Processed</td>
+ <td><span id='acq-pl-upload-lid-processed'>0</span></td>
+ </tr>
+ <tr>
+ <td>Debits Encumbered</td>
+ <td><span id='acq-pl-upload-debits-processed'>0</span></td>
+ </tr>
+ <tr>
+ <td>Bib Records Imported</td>
+ <td><span id='acq-pl-upload-bibs-processed'>0</span></td>
+ </tr>
+ <tr>
+ <td>Bib Records Indexed</td>
+ <td><span id='acq-pl-upload-indexed-processed'>0</span></td>
+ </tr>
+ <tr>
+ <td>Copies Created</td>
+ <td><span id='acq-pl-upload-copies-processed'>0</span></td>
+ </tr>
+ </tbody>
+ <tbody id='acq-pl-upload-complete' class='hidden'>
+ <tr><td colspan='2'>Upload Complete!</td></tr>
+ <tr><td colspan='2'><a id='acq-pl-upload-complete-po'>View Purchase Order</a></td></tr>
+ <tr><td colspan='2'><a id='acq-pl-upload-complete-pl'>View Selection List</a></td></tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+</form>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/picklist/upload.js'> </script>
+[% END %]
--- /dev/null
+[% WRAPPER 'base.tt2' %]
+[% ctx.page_title = 'Patron Requests' %]
+<script type="text/javascript">var reqId = '[% ctx.page_args.0 %]';</script>
+
+ <div dojoType="dijit.layout.StackContainer" id="stackContainer" doLayout="false">
+ <!-- *** List View ********************************************************************************* -->
+ <div dojoType="dijit.layout.ContentPane">
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="top" class='oils-header-panel'>
+ <div>[% ctx.page_title %]</div>
+ </div>
+ <div>
+ <span>Context Org Unit</span>
+ <select
+ dojoType="openils.widget.OrgUnitFilteringSelect"
+ jsId='contextOrgSelector'
+ searchAttr='shortname'
+ labelAttr='shortname'>
+ </select>
+ </div>
+ <table jsId="rGrid"
+ dojoType="openils.widget.AutoGrid"
+ query="{id: '*'}"
+ suppressFields='["id", "usr", "pickup_lib", "holdable_formats", "phone_notify", "email_notify", "lineitem", "eg_bib", "max_fee", "cancel_reason"]'
+ fieldOrder='["title", "author", "isxn", "article_title", "article_pages", "request_type", "volume", "pubdate", "publisher", "location", "other_info", "mentioned"]'
+ fmClass='aur'
+ editStyle='pane'
+ autoHeight='true'
+ defaultCellWidth='"auto"'
+ suppressFields="['id']"
+ showPaginator='true'
+ showColumnPicker='true'
+ columnPickerPrefix='"acq.picklist.user_request"'>
+ <thead>
+ <tr>
+ <th field='title' get='getTitle' formatter='formatTitle'/>
+ </tr>
+ </thead>
+ </table>
+ </div>
+ <!-- *** Detail View ********************************************************************************* -->
+ <div dojoType="dijit.layout.ContentPane" style="height: 100%;">
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="top" class='oils-header-panel'>
+ <div>Patron Request</div>
+ <div>
+ <button dojoType="dijit.form.Button" onClick="location.href=oilsBasePath+'/acq/picklist/user_request'">[% ctx.page_title %]</button>
+ <button dojoType="dijit.form.Button" onClick="fooPicklist()"><span id="add_to_picklist">Add to Selection List</span><span id="view_picklist">View Selection List</span></button>
+ <button dojoType="dijit.form.Button" onClick="setNoHold()">Set No Hold</button>
+ <span dojoType="dijit.form.DropDownButton">
+ <span>Cancel Request</span>
+ <span dojoType="dijit.TooltipDialog">
+ <label for="acq-ur-cancel-reason">
+ Reason:
+ </label>
+ <span id="acq-ur-cancel-reason"></span>
+ <button jsId="acqUrCancelReasonSubmit"
+ dojoType="dijit.form.Button"
+ type="submit">Cancel Request</button>
+ </span>
+ </span>
+ </div>
+ </div>
+ <div id="detail_content_pane" />
+ </div>
+ </div>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/picklist/user_request.js'></script>
+[% END %]
--- /dev/null
+[% WRAPPER 'base.tt2' %]
+[% ctx.page_title = 'Selection List' %]
+<div dojoType="dijit.layout.ContentPane" style="height:100%">
+ <div class='container'>
+ <div id='oils-acq-picklist-header'>
+ Selection list <span id='oils-acq-picklist-name'> </span>
+ <div class='oils-acq-picklist-attributes'>
+ <div>Create date: <span id="oils-acq-picklist-attr-cdate"></span></div>
+ <div>Last updated: <span id="oils-acq-picklist-attr-edate"></span></div>
+ <div>Selector: <span id="oils-acq-picklist-attr-owner"></span></div>
+ <div>Entry Count: <span id="oils-acq-picklist-attr-count"></span></div>
+ </div>
+ </div>
+ </div>
+ <script type="text/javascript">var plId = '[% ctx.page_args.0 %]';</script>
+ [% INCLUDE 'acq/common/li_table.tt2' %]
+</div>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/picklist/view.js'></script>
+[% END %]
+
--- /dev/null
+[% WRAPPER "base.tt2" %]
+[% ctx.page_title = "Create Purchase Order" %]
+<h1>Create Purchase Order</h1>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/po/create.js"> </script>
+[% END %]
--- /dev/null
+[% WRAPPER "base.tt2" %]
+[% ctx.page_title = "EDI Messages" %]
+[% IF ctx.page_args.0 %]
+<h1>EDI Messages (Purchase Order [% ctx.page_args.0 %])</h1>
+[% ELSE %]
+<h1>EDI Messages</h1>
+[% END %]
+<br/>
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+ <table jsId="edimGrid"
+ autoHeight='true'
+ dojoType="openils.widget.AutoGrid"
+ defaultCellWidth="'auto'"
+ query="{id: '*'}"
+ [% IF ctx.page_args.0 %]
+ fieldOrder="['message_type', 'status', 'create_time', 'translate_time', 'process_time', 'error_time', 'error', 'account', 'remote_file']"
+ suppressFields="['id', 'edi', 'jedi', 'purchase_order']"
+ [% ELSE %]
+ fieldOrder="['purchase_order', 'message_type', 'status', 'create_time', 'translate_time', 'process_time', 'error_time', 'error', 'account', 'remote_file']"
+ suppressFields="['id', 'edi', 'jedi']"
+ [% END %]
+ editStyle='pane'
+ fmClass='acqedim'
+ editOnEnter='true'
+ editReadOnly='true'
+ showPaginator='true'>
+ </table>
+</div>
+
+<script type="text/javascript">
+ dojo.require('openils.Util');
+ dojo.require('openils.widget.AutoGrid');
+ dojo.require('openils.widget.Textarea');
+
+ var poId = "[% ctx.page_args.0 %]";
+ openils.Util.addOnLoad(
+ function() {
+ if (poId) {
+ edimGrid.loadAll({order_by : {acqedim : 'create_time DESC'}}, {purchase_order : poId});
+ } else {
+ edimGrid.loadAll({order_by : {acqedim : 'create_time DESC'}});
+ }
+ }
+ );
+</script>
+[% END %]
--- /dev/null
+[% WRAPPER base.tt2 %]
+
+<!-- grid -->
+
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="top" class="oils-header-panel">
+ <div>PO Triggered Events</div>
+ <div>
+ <button dojoType="dijit.form.Button" onClick="eventGrid.cancelSelected()">Cancel Selected</button>
+ <button dojoType="dijit.form.Button" onClick="eventGrid.resetSelected()">Reset Selected</button>
+ </div>
+ </div>
+ <div class="oils-acq-basic-form-div">
+ <span>
+ <label for="state">State</label>
+ <select name="state"
+ dojoType="dijit.form.FilteringSelect"
+ jsId="eventStateSelect"
+ searchAttr="name"
+ labelAttr="name"></select>
+ </span>
+ <span>
+ <label for="orgUnit">Context Org Unit</label>
+ <select name="orgUnit"
+ dojoType="openils.widget.OrgUnitFilteringSelect"
+ jsId="eventContextOrgSelect"
+ searchAttr="shortname"
+ labelAttr="shortname"></select>
+ </span>
+ <span>
+ <label for="startDate">Start Date Range</label>
+ <input name="startDate"
+ type="text"
+ dojoType="dijit.form.DateTextBox"
+ jsId="eventStartDatePicker" />
+ </span>
+ <span>
+ <label for="endDate">End Date Range</label>
+ <input name="endDate"
+ type="text"
+ dojoType="dijit.form.DateTextBox"
+ jsId="eventEndDatePicker" />
+ </span>
+ <button dojoType="dijit.form.Button" onClick="eventGrid.doSearch()">Search</button>
+ </div>
+ <table jsId="eventGrid"
+ dojoType="openils.widget.AutoGrid"
+ query="{id: '*'}"
+ fmClass="atev"
+ suppressFields="['update_process','user_data','template_output','error_output','async_output','event_def']"
+ defaultCellWidth="'auto'"
+ editOnEnter="false">
+ <thead>
+ <tr>
+ <th field="target" formatter="format_po_link">Purchase Order</th>
+ </tr>
+ </thead>
+ </table>
+ </div>
+</div>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/po/events.js"> </script>
+[% END %]
+
+
--- /dev/null
+[% WRAPPER "base.tt2" %]
+[% ctx.page_title = "PO History" %]
+<h1>Purchase Order History</h1>
+<br/>
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+ <table jsId="pohGrid"
+ autoHeight='true'
+ dojoType="openils.widget.AutoGrid"
+ defaultCellWidth="'auto'"
+ fieldOrder="['audit_time', 'name', 'state', 'ordering_agency', 'provider', 'create_time', 'edit_time', 'order_date', 'creator', 'editor', 'owner']"
+ query="{audit_id: '*'}"
+ suppressFields='["id", "audit_id", "audit_action"]'
+ fmClass='acqpoh'
+ editOnEnter='true'
+ editReadOnly='true'
+ showPaginator='true'>
+ </table>
+</div>
+
+<script type="text/javascript">
+ dojo.require('openils.Util');
+ dojo.require('openils.widget.AutoGrid');
+ var poId = "[% ctx.page_args.0 %]";
+ openils.Util.addOnLoad(
+ function() {
+ pohGrid.loadAll({order_by : {acqpoh : 'audit_time DESC'}}, {id : poId});
+ }
+ );
+</script>
+[% END %]
--- /dev/null
+<div id="acq-po-item-table" class="hidden">
+ <h3>Direct Charges, Taxes, Fees, etc.</h3>
+ <table>
+ <thead id="acq-po-item-table-headings">
+ <tr>
+ <th>Charge Type</th>
+ <th>Fund</th>
+ <th>Title/Description</th>
+ <th>Author</th>
+ <th>Note</th>
+ <th>Estimated Cost</th>
+ <th><!-- Delete --></th>
+ </tr>
+ </thead>
+ <tbody id="acq-po-item-table-items">
+ <tr>
+ <td name="inv_item_type" em="12"></td>
+ <td name="fund" em="10"></td>
+ <td name="title" em="12"></td>
+ <td name="author" em="8"></td>
+ <td name="note" em="12"></td>
+ <td name="estimated_cost" em="8"></td>
+ <td><button name="delete">X</button></td>
+ </tr>
+ </tbody>
+ </table>
+ <div id="acq-po-item-table-i-am-empty" class="hidden">
+ <em>There are no miscellanea attached to this purchase order.</em>
+ </div>
+ <div id="acq-po-item-table-controls">
+ <button id="acq-po-item-table-new-charge">New Charge</button>
+ <button id="acq-po-item-table-save-new">Save New Charges</button>
+ </div>
+</div>
--- /dev/null
+[% WRAPPER base.tt2 %]
+[% ctx.page_title = 'Purchase Orders' %]
+<script type="text/javascript">
+ var poIds = function(s) {
+ return s == "" ? undefined :
+ s.split(",").map(function(t) { return Number(t); });
+ }("[% ctx.page_args.0 %]");
+</script>
+<div id='oils-acq-list-header' class='container'>
+ <div id='oils-acq-list-header-label'>PO Search</div>
+</div>
+
+<div id="oils-acq-po-heading-template" class="hidden">
+ <span>Purchase Order: <a attr="name"></a></span>
+ <span>Total Lineitems: <span attr="lineitem_count"></span></span>
+ <span>Total Encumbered: $<span attr="amount_encumbered"></span></span>
+ <span>Total Spent: $<span attr="amount_spent"></span></span>
+ <span>Total Copies: <span attr="copies"></span></span>
+ <span>Status: <span attr="state"></span></span>
+ <span><a class="hidden" attr="activator" href="javascript:void(0);">Activate Order</a></span>
+</div>
+
+<script type="text/javascript">
+ function formatId(id) {
+ if(id) return '<a href="[% ctx.base_path %]/acq/po/view/' + id + '">'+id;
+ }
+</script>
+
+
+<form dojoType='dijit.form.Form' action='' method='' id='oils-acq-po-search-form'>
+
+ <script type="dojo/method" event="onSubmit">
+ doSearch(this.getValues());
+ return false; /* don't redirect */
+ </script>
+
+ <div class='oils-acq-basic-form-div'>
+
+ <label for='id'>ID</label>
+ <input dojoType='dijit.form.NumberTextBox' name='id'> </input>
+
+ <label for='provider'>Provider</label>
+ <input id='po-search-provider-selector'/>
+
+ <label for='state'>State</label></td>
+ <script type="text/javascript">
+ dojo.require('dojo.data.ItemFileReadStore');
+ var stateStore = new dojo.data.ItemFileReadStore({
+ data : {
+ identifier:"value",
+ label: "name",
+ items: [
+ /* FIXME This is probably not the correct final list of
+ possible states */
+ {name:"New", value:'new'},
+ {name:"In Process", value:'in-process'},
+ {name:"Pending", value:'pending'},
+ {name:"On order", value:'on-order'}
+ ]
+ }
+ });
+ </script>
+ <input dojoType='dijit.form.FilteringSelect'
+ name='state'
+ required='false'
+ store='stateStore'
+ labelAttr='name'
+ valueAttr='value'
+ searchAttr='name'/>
+
+ <label for='ordering_agency'>Ordering Agency</label>
+ <input id='po-search-agency-selector'/>
+
+ <span dojoType='dijit.form.Button' type='submit'>Search</span>
+ </div>
+ <div class="oils-acq-basic-form-div">
+ <input dojoType="dijit.form.CheckBox" value="1" name="metapo_view"
+ id="metapo_view" type="checkbox" />
+ <label for="metapo_view">Show results as a virtual combined PO</label>
+ </div>
+</form>
+<br/>
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client" id="holds_po_grid">
+ <table
+ id="po-grid"
+ autoHeight='true'
+ jsId="poGrid"
+ dojoType="openils.widget.AutoGrid"
+ query="{id: '*'}"
+ fieldOrder="['id', 'owner', 'ordering_agency', 'provider', 'create_time', 'edit_time', 'state']"
+ suppressFields="['owner', 'editor', 'creator']"
+ query="{id: '*'}"
+ defaultCellWidth='"auto"'
+ showSequenceFields='true'
+ showPaginator='true'
+ fmClass='acqpo'>
+ <thead>
+ <tr>
+ <th field="id" formatter='formatId'>ID</th>
+ <!--
+ <th field="owner" get='getPOOwner'/>
+ -->
+ </tr>
+ </thead>
+ </table>
+ <div comment='dojo-needs-me'></div>
+</div>
+<div id="oils-acq-holds-metapo-summary" class="hidden">
+ <table id="oils-acq-metapo-summary">
+ <thead>
+ <tr>
+ <th colspan="2">Results Summary</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th>Total Purchase Orders:</th>
+ <td id="oils-acq-metapo-summary-po"></td>
+ </tr>
+ <tr>
+ <th>Total Lineitems:</th>
+ <td id="oils-acq-metapo-summary-lineitem_count"></td>
+ </tr>
+ <tr>
+ <th>Total Copies:</th>
+ <td id="oils-acq-metapo-summary-copies"></td>
+ </tr>
+ <tr>
+ <th>Total Encumbered:</th>
+ <td>$<span id="oils-acq-metapo-summary-amount_encumbered"></span></td>
+ </tr>
+ <tr>
+ <th>Total Spent:</th>
+ <td>$<span id="oils-acq-metapo-summary-amount_spent"></span></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+[% INCLUDE 'acq/common/li_table.tt2' %]
+
+<!-- load the page-specific JS -->
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/po/search.js'> </script>
+[% END %]
--- /dev/null
+[% WRAPPER 'base.tt2' %]
+[% ctx.page_title = "Purchase Order" %]
+<div dojoType="dijit.layout.ContentPane" style="height:100%">
+ <div>
+ <div id='oils-acq-picklist-header'>
+ <big>
+ Purchase Order (<span id="acq-po-view-state"></span>)
+ </big>
+ <span id='acq-po-activated-on' class='hidden'></span>
+ <table class="oils-generic-table acq-po-info">
+ <tr>
+ <th>ID</th><td><a id="acq-po-view-id"/></td>
+ <th>Prepayment Required?</th>
+ <td><span id="acq-po-view-prepay"/></td>
+ </tr>
+ <tr>
+ <th>Name</th>
+ <td><a id="acq-po-view-name" href="javascript:void(0);"
+ onclick="updatePoName()"></a></td>
+ <th>Activatable?</th>
+ <td>
+ <span id="acq-po-activate-checking"></span>
+ <a class="hidden" id="acq-po-activate-link" href="javascript:void(0);" onclick="activatePo()">Activate Order</a>
+ </td>
+ </tr>
+ <tr>
+ <th>Provider</th>
+ <td><span id="acq-po-view-provider"/></td>
+ <th>Notes</th>
+ <td>
+ <a href="javascript:void(0);"
+ id="acq-po-view-notes"></a>
+ </td>
+ </tr>
+ <tr>
+ <th>Total Lineitems</th>
+ <td><span id="acq-po-view-total-li"/></td>
+ <th>EDI Messages</th>
+ <td>
+ <a href="javascript:void(0);"
+ id="acq-po-view-edi-messages"></a>
+ </td>
+ </tr>
+ <tr>
+ <th>Total Estimated</th>
+ <td>$<span id="acq-po-view-total-estimated"/></td>
+ <th>History</th>
+ <td>
+ <a class="hidden" href="javascript:void(0);"
+ id="acq-po-view-history">View</a>
+ </td>
+ </tr>
+ <tr>
+ <th>Total Encumbered</th>
+ <td>$<span id="acq-po-view-total-enc"/></td>
+ <th>Invoicing</th>
+ <td id="acq-po-invoice-stuff" class="hidden">
+ <button dojoType="dijit.form.Button"
+ id="acq-po-view-invoice-link">
+ View Invoices
+ (<span id="acq-po-view-invoice-count"></span>)
+ </button>
+ <button dojoType="dijit.form.Button"
+ id="acq-po-create-invoice-link">
+ Create Invoice
+ </button>
+ <button dojoType="dijit.form.DropDownButton">
+ <span>Link Invoice</span>
+ <div dojoType="dijit.TooltipDialog"
+ id="acq-po-link-invoice">
+ <script type="dojo/connect" event="onOpen">
+ if (!invoiceLinkDialogManager) {
+ invoiceLinkDialogManager =
+ new InvoiceLinkDialogManager(
+ "po", PO
+ );
+ }
+ </script>
+ [% INCLUDE "acq/common/inv_dialog.tt2"
+ which = "po" %]
+ </div>
+ </button>
+ </td>
+ </tr>
+ <tr>
+ <th>Total Spent</th>
+ <td>$<span id="acq-po-view-total-spent"/></td>
+ <th id="acq-po-cancel-label"></th>
+ <td>
+ <span id="acq-po-view-cancel-reason"></span>
+ <span id="acq-po-choose-cancel-reason" class="hidden">
+ <span dojoType="dijit.form.DropDownButton">
+ <span>Cancel order</span>
+ <span dojoType="dijit.TooltipDialog">
+ <label for="acq-po-cancel-reason">
+ Reason:
+ </label>
+ <span id="acq-po-cancel-reason"></span>
+ <button jsId="acqPoCancelReasonSubmit"
+ dojoType="dijit.form.Button"
+ type="submit">Cancel order</button>
+ </span>
+ </span>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td colspan='3'>
+ <a class="hidden" id="acq-po-split" href="javascript:void(0);"
+ onclick="if (confirm(localeStrings.CONFIRM_SPLIT_PO)) splitPo();">
+ Split Order by Lineitems
+ </a>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/common/base64.js"></script>
+ <script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/po/view_po.js'></script>
+ <script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/po/item_table.js"></script>
+ <script type="text/javascript">
+ var poId = "[% ctx.page_args.1 %]";
+ var liFocus = "[% ctx.page_args.0 %]";
+ if (liFocus && !poId) {
+ poId = liFocus;
+ liFocus = null;
+ }
+ </script>
+ [% INCLUDE 'acq/common/li_table.tt2' %]
+ [% INCLUDE "acq/common/notes.tt2" which = "Po" %]
+ <div class='hidden' id='acq-po-no-lineitems'>
+ <button type='dijit.form.Button' onclick='location.href = oilsBasePath + "/acq/picklist/brief_record?po=" + poId'>
+ Add Brief Record
+ </button>
+ </div>
+ [% INCLUDE "acq/po/item_table.tt2" %]
+</div>
+[% END %]
--- /dev/null
+[% WRAPPER base.tt2 %]
+ <h1>Receiving Processing</h1><br/>
+ <div id='oils-acq-recv-search-block' class='container'>
+ <form dojoType='dijit.form.Form' action='' method=''>
+ <script type="dojo/method" event="onSubmit">
+ doSearch(this.getValues());
+ return false; /* don't redirect */
+ </script>
+ <table class='oils-acq-basic-form-table'>
+ <tr>
+ <td><label for='identifier'>Identifier</label></td>
+ <td>
+ <input dojoType='dijit.form.TextBox' name='identifier'/>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="name">Ordering Agency:</label></td>
+ <td>
+ <input dojoType="openils.widget.OrgUnitFilteringSelect" jsId='orderingAgencySelect'
+ searchAttr="shortname" name="ordering_agency" autocomplete="true" labelAttr='shortname'> </input>
+ </td>
+ </tr>
+ <tr>
+ <td colspan='2'><div dojoType='dijit.form.Button' type='submit'>Search</div></td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ <div dojoType="dijit.ProgressBar" style="width:300px" jsId="searchProgress" id="searchProgress"></div>
+ <script type="text/javascript">dojo.style('searchProgress', 'visibility', 'hidden');</script>
+ <div id='oils-acq-recv-grid' style='height:100%'>
+ [% grid_jsid = 'liGrid'; domprefix = 'oils-acq-recv' %]
+ [% INCLUDE 'acq/common/jubgrid.tt2' %]
+ </div>
+ <script type="text/javascript">dojo.style('oils-acq-recv-grid', 'visibility', 'hidden');</script>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/receiving/process.js'> </script>
+[% END %]
+
--- /dev/null
+[% WRAPPER "base.tt2" %]
+[% ctx.page_title = "Acquisitions Search" %]
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/common/base64.js"></script>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/search/unified.js"></script>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/search/invoice.js"></script>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/search/picklist.js"></script>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/search/purchase_order.js"></script>
+<div id="acq-unified-body" class="hidden">
+ <div id="acq-unified-heading">
+ <span id="acq-unified-heading-actual">Acquisitions Search</span>
+ <span id="acq-unified-heading-controls">
+ <button id="acq-unified-hide-form" onclick="hideForm();">
+ Hide Search Form
+ </button>
+ <button id="acq-unified-reveal-form" onclick="revealForm();"
+ class="hidden">
+ Reveal Search Form
+ </button>
+ </span>
+ <div style="clear: both;"><!-- layout; don't remove --></div>
+ </div>
+ <div id="acq-unified-form">
+ <div>
+ <label for="acq-unified-result-type">Search for</label>
+ <select id="acq-unified-result-type">
+ <option value="lineitem">line items</option>
+ <option value="lineitem_and_bib">
+ line items & catalog records
+ </option>
+ <option value="picklist">selection lists</option>
+ <option value="purchase_order">purchase orders</option>
+ <option value="invoice">invoices</option>
+ </select>
+ <label for="acq-unified-conjunction">matching</label>
+ <select id="acq-unified-conjunction">
+ <option value="and">all</option>
+ <option value="or">any</option>
+ </select>
+ <label for="acq-unified-conjunction">
+ of the following terms:
+ </label>
+ </div>
+ <div id="acq-unified-terms">
+ <table id="acq-unified-terms-table">
+ <tbody id="acq-unified-terms-tbody">
+ <tr id="acq-unified-terms-row-tmpl"
+ class="acq-unified-terms-row">
+ <td name="selector"
+ class="acq-unified-terms-selector"></td>
+ <td name="match"
+ class="acq-unified-terms-match">
+ <select>
+ <option value="">is</option>
+ <option value="__not">is NOT</option>
+ <option value="__fuzzy" disabled="disabled">
+ contains
+ </option>
+ <option value="__not,__fuzzy"
+ disabled="disabled">
+ does NOT contain
+ </option>
+ <option value="__lte" disabled="disabled">
+ is on or BEFORE
+ </option>
+ <option value="__gte" disabled="disabled">
+ is on or AFTER
+ </option>
+ <option value="__in" disabled="disabled">
+ matches a term from a file
+ </option>
+ </select>
+ </td>
+ <td name="widget"
+ class="acq-unified-terms-widget"></td>
+ <td name="remove"
+ class="acq-unified-terms-remove"></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div id="acq-unified-add-term">
+ <button onclick="termManager.addRow()">Add Search Term</button>
+ </div>
+ <div>
+ <button
+ onclick="resultManager.go(termManager.buildSearchObject())">
+ Search
+ </button>
+ </div>
+ </div>
+ <div id="acq-unified-results-purchase_order" class="hidden">
+ <div class="acq-unified-result-specific-controls">
+ <button onclick="dijit.byId('acq-unified-po-grid').refresh();">
+ Refresh Grid
+ </button>
+ </div>
+ <table
+ id="acq-unified-po-grid"
+ autoHeight="true"
+ dojoType="openils.widget.AutoGrid"
+ query="{id: '*'}"
+ fieldOrder="['name', 'owner', 'ordering_agency', 'provider',
+ 'create_time', 'edit_time', 'state']"
+ suppressFields="['owner', 'editor', 'creator']"
+ defaultCellWidth="'auto'"
+ showPaginator="true"
+ fmClass="acqpo">
+ <thead>
+ <tr>
+ <th field="name" get="getName" formatter="formatPoName">
+ Name
+ </th>
+ </tr>
+ </thead>
+ </table>
+ </div>
+ <div id="acq-unified-results-picklist" class="hidden">
+ <div class="acq-unified-result-specific-controls">
+ <button dojoType="dijit.form.Button"
+ onClick="dijit.byId('acq-unified-pl-grid').refresh();">
+ Refresh Grid
+ </button>
+ <div dojoType="dijit.form.DropDownButton">
+ <span>New Selection List</span>
+ <div dojoType="dijit.TooltipDialog"
+ execute="createPl(arguments[0]);">
+ <table class="dijitTooltipTable">
+ <tr>
+ <td><label for="name">Name:</label></td>
+ <td><input dojoType="dijit.form.TextBox"
+ name="name"/></td>
+ </tr>
+ <tr>
+ <td colspan="2" align="center">
+ <button dojoType="dijit.form.Button"
+ type="submit">Create</button>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div dojoType="dijit.form.DropDownButton">
+ <span>Clone Selected</span>
+ <div dojoType="dijit.TooltipDialog"
+ execute="cloneSelectedPl(arguments[0]);">
+ <table class="dijitTooltipTable">
+ <tr>
+ <td><label for="name">New Name:</label></td>
+ <td><input dojoType="dijit.form.TextBox"
+ name="name"/></td>
+ </tr>
+ <tr>
+ <td colspan="2" align="center">
+ <button dojoType="dijit.form.Button"
+ type="submit">Clone</button>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div dojoType="dijit.form.DropDownButton">
+ <span>Merge Selected</span>
+ <div dojoType="dijit.TooltipDialog"
+ execute="mergeSelectedPl(arguments[0]);"
+ jsId="plMergeDialog">
+ <script type="dojo/connect" event="onOpen">
+ loadLeadPlSelector();
+ </script>
+ <table class="dijitTooltipTable">
+ <tr>
+ <td><label for="name">Choose the Lead
+ Selection List:</label></td>
+ <td><input jsId="plMergeLeadSelector"
+ dojoType="dijit.form.FilteringSelect"
+ name="lead" /></td>
+ </tr>
+ <tr>
+ <td colspan="2" align="center">
+ <button dojoType="dijit.form.Button"
+ type="submit">Merge</button>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <button dojoType="dijit.form.Button"
+ onclick="deleteSelectedPl();">Delete Selected</button>
+ </div>
+ <table
+ id="acq-unified-pl-grid"
+ autoHeight="true"
+ dojoType="openils.widget.AutoGrid"
+ query="{id: '*'}"
+ fieldOrder="['name', 'owner', 'entry_count',
+ 'create_time', 'edit_time']"
+ suppressFields="['editor', 'creator']"
+ defaultCellWidth="'auto'"
+ showPaginator="true"
+ fmClass="acqpl">
+ <thead>
+ <tr>
+ <th field="name" get="getName" formatter="formatPlName">
+ Name
+ </th>
+ <th field="owner" get="getPlOwnerName">Owner</th>
+ <th field="entry_count">Entry Count</th>
+ </tr>
+ </thead>
+ </table>
+ </div>
+ <div id="acq-unified-results-invoice" class="hidden">
+ <div class="acq-unified-result-specific-controls">
+ <button onclick="dijit.byId('acq-unified-inv-grid').refresh();">
+ Refresh Grid
+ </button>
+ <button onclick="printInvoiceVouchers();">
+ Print Selected Invoices
+ </button>
+ </div>
+ <table
+ id="acq-unified-inv-grid"
+ autoHeight="true"
+ dojoType="openils.widget.AutoGrid"
+ query="{id: '*'}"
+ fieldOrder="['inv_ident', 'receiver', 'provider', 'shipper']"
+ defaultCellWidth="'auto'"
+ showPaginator="true"
+ fmClass="acqinv">
+ <thead>
+ <tr>
+ <th field="inv_ident" get="getInvIdent"
+ formatter="formatInvIdent"></th>
+ </tr>
+ </thead>
+ </table>
+ </div>
+ <div id="acq-unified-results-no_results" class="hidden">
+ There are no results from your search.
+ </div>
+ <div id="acq-unified-results-lineitem" class="hidden">
+ [% INCLUDE "acq/common/li_table_pager.tt2" %]
+ [% INCLUDE "acq/common/li_table.tt2" %]
+ </div>
+ <div jsId='progressDialog' dojoType='openils.widget.ProgressDialog'/>
+</div>
+[% END %]
--- /dev/null
+[% WRAPPER base.tt2 %]
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="top">
+ <div dojoType="dijit.form.DropDownButton">
+ <span>Lineitem Attribute Attribute</span>
+ <div dojoType="dijit.TooltipDialog" execute="createOrderRecordField(arguments[0]);">
+ <script type='dojo/connect' event='onOpen'>//setORDesc();</script>
+ <table class='dijitTooltipTable'>
+ <tr>
+ <td><label for="code">Code:</label></td>
+ <td><input dojoType='dijit.form.TextBox' name='code'/></td>
+ </tr>
+ <tr>
+ <td><label for="description">Description: </label></td>
+ <td><input id='oils-acq-provider-or-desc' dojoType="dijit.form.TextBox" name="description"> </input></td>
+ </tr>
+ <tr>
+ <td><label for="amount">Tag: </label></td>
+ <td><input dojoType="dijit.form.TextBox" name="tag"></input></td>
+ </tr>
+ <tr>
+ <td><label for="amount">Subfield: </label></td>
+ <td><input dojoType="dijit.form.TextBox" name="subfield"></input></td>
+ </tr>
+ <tr>
+ <td><label for="ident">Identifer Field?: </label></td>
+ <td>
+ <select dojoType="dijit.form.FilteringSelect" name="ident">
+ <option value='f' selected='selected'>False</option>
+ <option value='t'>True</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="amount">XPath (advanced): </label></td>
+ <td><input dojoType="dijit.form.TextBox" name="xpath"></input></td>
+ </tr>
+ <tr>
+ <td colspan='2' align='center'>
+ <button dojoType=dijit.form.Button type="submit">Apply</button>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <script type="text/javascript">
+ var liAttrGridLayout = [{
+ cells : [[
+ {name: 'ID', field: 'id'},
+ {name: 'Code', field:'code', width:'auto'},
+ {name: 'Description', field: "description", width:'auto'},
+ {name: 'Tag', get:getTag},
+ {name: 'Subfield', get:getSubfield},
+ {name: 'Identifier', field:'ident'},
+ {name: 'XPath', field:'xpath', width:'auto'}
+ ]]
+ }];
+ </script>
+ <div dojoType="dijit.layout.TabContainer">
+ <div dojoType="dijit.layout.ContentPane"
+ class='oils-acq-detail-content-pane' title="MARC Attributes" style='height:600px;'>
+ <script type='dojo/connect' event='onShow'>loadMarcAttrGrid();</script>
+ <div jsId='liMarcAttrGrid' dojoType="dojox.Grid" structure='liAttrGridLayout'> </div>
+ </div>
+ <div dojoType="dijit.layout.ContentPane"
+ class='oils-acq-detail-content-pane' title="Generated Attributes" style='height:600px;'>
+ <script type='dojo/connect' event='onShow'>loadGeneratedAttrGrid();</script>
+ <div jsId='liGeneratedAttrGrid' dojoType="dojox.Grid" structure='liAttrGridLayout'> </div>
+ </div>
+ </div>
+</div>
+
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/settings/li_attr.js'></script>
+[% END %]
--- /dev/null
+[% ctx.page_title = 'User Editor' %]
+[% WRAPPER base.tt2 %]
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/actor/user/register.js'></script>
+<link rel="stylesheet" type="text/css" href="[% ctx.media_prefix %]/css/skin/[% ctx.skin %]/register.css" />
+
+<div dojoType="dijit.form.Form" id="myForm" jsId="myForm" encType="multipart/form-data" action="" method="">
+ <script type="dojo/method" event="onSubmit">
+ /* we don't want to use the form action, but uEditSave and UEditSaveClone from the Save buttons. We
+ do want to use the Form's validation features, which we do from within UEditSave, etc. */
+ return false;
+ </script>
+ <table>
+ [% INCLUDE actor/user/register_table.tt2 %]
+ </table>
+</div>
+
+<div id='uedit-save-div'>
+ <button dojoType='dijit.form.Button' jsId='saveButton' onClick='uEditSave' scrollOnFocus='false'></button>
+ <button dojoType='dijit.form.Button' jsId='saveCloneButton' onClick='uEditSaveClone' scrollOnFocus='false'></button>
+ <div id='require-toggle'>
+ <a href='javascript:uEditToggleRequired(1);' id='uedit-show-required'>Show Only Required Fields</a><br id='uedit-show-required-br'/>
+ <a href='javascript:uEditToggleRequired(2);' id='uedit-show-suggested'>Show Suggested Fields</a><br id='uedit-show-suggested-br'/>
+ <a href='javascript:uEditToggleRequired(0);' id='uedit-show-all' class='hidden'>Show All Fields</a>
+ </div>
+</div>
+
+<!-- context help widget -->
+<a class='hidden' id='uedit-help-template'><img src='/opac/images/advancedsearch-icon.png'></img></a>
+<fieldset id='uedit-help-div' class='hidden'>
+ <legend id='uedit-help-field'/>
+ <div id='uedit-help-text'/>
+</fieldset>
+
+<!-- duplicate patron search results -->
+<div id='uedit-dupe-div' class='hidden'>
+ <div><a href='javascript:void(0);' id='uedit-dupe-names-link'></a></div>
+ <div><a href='javascript:void(0);' id='uedit-dupe-email-link'></a></div>
+ <div><a href='javascript:void(0);' id='uedit-dupe-ident-link'></a></div>
+ <div><a href='javascript:void(0);' id='uedit-dupe-phone-link'></a></div>
+ <div><a href='javascript:void(0);' id='uedit-dupe-address-link'></a></div>
+</div>
+
+<div class='hidden'>
+ <span id='true' style='color:green;'>✓</span>
+ <span id='false' style='color:red;'>✗</span>
+ <div dojoType='dijit.Dialog' jsId='allCardsDialog'>
+ <table class='oils-generic-table' style='margin:10px;'>
+ <thead>
+ <tr>
+ <th>Barcode</th>
+ <th>Active</th>
+ </tr>
+ </thead>
+ <tbody id='uedit-all-cards-tbody'>
+ <tr id='uedit-all-cards-tr-template'>
+ <td><div name='barcode'></div></td>
+ <td><div name='active'></div></td>
+ </tr>
+ </tbody>
+ <tbody>
+ <tr>
+ <td colspan='2' style='text-align:center;'>
+ <button dojoType='dijit.form.Button' onClick='allCardsDialog.hide()' scrollOnFocus='false'>Close</button>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+</div>
+
+
+[% END %]
+
--- /dev/null
+<tbody id='uedit-tbody'>
+ <tr fmclass='ac' fmfield='barcode' required='required'>
+ <td/><td/><td/>
+ <td>
+ <button dojoType='dijit.form.Button' jsId='replaceBarcode' scrollOnFocus='false'></button>
+ <span id='uedit-dupe-barcode-warning' style='color:red; font-weight:bold' class='hidden'>
+ </span>
+ </td>
+ <td id='uedit-all-barcodes' class='hidden'>
+ <button dojoType='dijit.form.Button' jsId='allCards' scrollOnFocus='false'></button>
+ </td>
+ </tr>
+ <tr fmclass='au' fmfield='usrname' required='required'>
+ <td/><td/><td/>
+ <td>
+ <span id='uedit-dupe-username-warning' style='color:red; font-weight:bold' class='hidden'>
+ </span>
+ </td>
+ </tr>
+ <tr fmclass='au' fmfield='passwd' required='required'>
+ <td/><td/><td/>
+ <td>
+ <button dojoType='dijit.form.Button' jsId='generatePassword' scrollOnFocus='false' tabIndex='-1'></button>
+ </td>
+ </tr>
+ <tr fmclass='au' fmfield='passwd2' required='required'><td/><td id='verifyPassword'></td><td/></tr>
+ <tr fmclass='au' fmfield='first_given_name' required='required'/>
+ <tr fmclass='au' fmfield='second_given_name'/>
+ <tr fmclass='au' fmfield='family_name' required='required'/>
+ <tr fmclass='au' fmfield='suffix'/>
+ <tr fmclass='au' fmfield='alias'/>
+ <tr fmclass='au' fmfield='dob'/>
+ <tr fmclass='au' fmfield='juvenile'/>
+ <tr fmclass='au' fmfield='ident_type' required='required'/>
+ <tr fmclass='au' fmfield='ident_value'/>
+ <tr fmclass='au' fmfield='ident_value2'><td/><td id='parentGuardian'></td></tr>
+ <tr fmclass='au' fmfield='email'/>
+ <tr fmclass='au' fmfield='day_phone'/>
+ <tr fmclass='au' fmfield='evening_phone'/>
+ <tr fmclass='au' fmfield='other_phone'/>
+ <tr fmclass='au' fmfield='home_ou' required='required'/>
+ <tr fmclass='au' fmfield='profile' required='required'/>
+ <tr fmclass='au' fmfield='expire_date' required='required'/>
+ <tr fmclass='au' fmfield='net_access_level' required='required'/>
+ <tr fmclass='au' fmfield='active'/>
+ <tr fmclass='au' fmfield='barred'/>
+ <tr fmclass='au' fmfield='master_account'/>
+ <tr fmclass='au' fmfield='claims_returned_count' wclass='dijit.form.NumberSpinner' wconstraints="{min:0,places:0}" wvalue='0'/>
+ <tr fmclass='au' fmfield='claims_never_checked_out_count' wclass='dijit.form.NumberSpinner' wconstraints="{min:0,places:0}" wvalue='0'/>
+ <tr fmclass='au' fmfield='alert_message' wclass='dijit.form.Textarea' wstyle='height:5em'/>
+
+ <tr class='divider hidden' id='uedit-settings-divider'><td colspan='0' id='userSettings'></td></tr>
+ <tr class='hidden' id='uedit-user-setting-template'>
+ <td/>
+ <td><span name='label'></span></td>
+ <td><div name='widget'></div></td>
+ </tr>
+
+ <!-- Address -->
+ <tr name='uedit-addr-divider' class='divider' type='addr-template' required='show'>
+ <td colspan='2' name='addressHeader'></td>
+ <td>
+ <span name='mailingAddress'></span><input type='radio' name='mailing_address'>
+ <span name='billingAddress'></span><input type='radio' name='billing_address'>
+ <button dojoType='dijit.form.Button' scrollOnFocus='false' name='delete-button' class='uedit-addr-del-button'>X</button>
+ </td>
+ </tr>
+
+ <tr name='uedit-addr-pending-row' type='addr-template' class='pending-addr-row hidden'>
+ <td colspan='3'>
+ <span style='padding-right:10px;' name='addressPending'></span>
+ <button dojoType='dijit.form.Button' scrollOnFocus='false' name='approve-button'></button>
+ <div name='replaced-addr-div'>
+ <div name='replaced-addr'></div>
+ </div>
+ </td>
+ </tr>
+
+ <tr name='uedit-addr-owner-row' type='addr-template' class='pending-addr-row hidden'>
+ <td colspan='3'>
+ <span style='padding-right:10px;' name='address-already-owned'></span>
+ <a href='javascript:void(0);' name='addr-owner'></a>
+ </td>
+ </tr>
+
+
+ <tr fmclass='aua' fmfield='address_type' type='addr-template' required='required'/>
+ <tr fmclass='aua' fmfield='post_code' type='addr-template' required='required'/>
+ <tr fmclass='aua' fmfield='street1' type='addr-template' required='required'/>
+ <tr fmclass='aua' fmfield='street2' type='addr-template' required='show'/>
+ <tr fmclass='aua' fmfield='city' type='addr-template' required='required'/>
+ <tr fmclass='aua' fmfield='county' type='addr-template' required='show'/>
+ <tr fmclass='aua' fmfield='state' type='addr-template' required='required'/>
+ <tr fmclass='aua' fmfield='country' type='addr-template' required='required'/>
+ <tr fmclass='aua' fmfield='valid' type='addr-template' required='show'/>
+ <tr fmclass='aua' fmfield='within_city_limits' type='addr-template' required='show'/>
+
+ <tr id='new-addr-row' class='newaddr-row' required='show'>
+ <td colspan='0' style='text-align:center;'>
+ <button dojoType='dijit.form.Button' onClick='uEditNewAddr' scrollOnFocus='false' name='addressNew'></button>
+ </td>
+ </tr>
+
+ <!-- stat cats -->
+ <tr class='divider' id='stat-cat-divider' required='suggested'><td colspan='0' id='statCats'></td></tr>
+ <tr id='stat-cat-row-template' required='suggested'><td class='uedit-help'/><td name='name'/><td name='widget'/></tr>
+
+ <!-- surveys -->
+ <tr id='survey-row-template' class='divider' required='suggested'><td colspan='0' name='name'/></tr>
+ <tr id='survey-question-row-template' required='suggested'><td class='uedit-help'/><td name='question'/><td name='answers'/></tr>
+</tbody>
+
--- /dev/null
+[% ctx.page_title = 'Events' %]
+[% WRAPPER base.tt2 %]
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/actor/user/trigger_events.js'></script>
+<script type="text/javascript">patronId = '[% ctx.page_args.0 %]'</script>
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="top" class='oils-header-panel'>
+ <div>User Events</div>
+ <div>
+ <button dojoType='dijit.form.Button' onClick='evtCancelSelected()'>Cancel Selected Events</button>
+ </div>
+</div>
+
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client" style='height:100%;'>
+ <table jsId="evtGrid" dojoType="dojox.grid.DataGrid" query="{id: '*'}">
+ <thead>
+ <tr>
+ <th field="event_def" get='getField' width='auto'>Event Def.</th>
+ <th field="hook" get='getField' width='auto'>Hook</th>
+ <th field="reactor" get='getField' width='auto'>Reactor</th>
+ <th field="validator" get='getField' width='auto'>Validator</th>
+ <th field="target" get='getField' width='auto'>Target</th>
+ <th field="state" get='getField' width='auto'>State</th>
+ </tr>
+ </thead>
+ </table>
+</div>
+
+[% END %]
[%- ctx.final_dtd =
- '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' -%]
+'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' -%]
[%- IF !ctx.dtd; ctx.dtd = ctx.final_dtd; END -%]
[% ctx.dtd %]
+<!-- note: after vandelay strings are ported to l('...'), we can remove the DTD conditional -->
<html xmlns='http://www.w3.org/1999/xhtml' lang='[% ctx.locale %]' xml:lang='[% ctx.locale %]'>
<head>
<title>[% ctx.page_title %]</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
- <link rel='stylesheet' type='text/css'
- href='[% ctx.media_prefix %]/css/skin/[% ctx.skin %].css' />
- <link rel='stylesheet' type='text/css'
- href='[% ctx.media_prefix %]/css/theme/[% ctx.skin %].css' />
+ <link rel='stylesheet' type='text/css' href='[% ctx.media_prefix %]/css/skin/[% ctx.skin %].css' />
+ <link rel='stylesheet' type='text/css' href='[% ctx.media_prefix %]/css/theme/[% ctx.skin %].css' />
<script language='javascript' src='/IDL2js' type='text/javascript'></script>
<script type="text/javascript">var djConfig = {parseOnLoad:true,isDebug:false};</script>
<script type="text/javascript" src="/js/dojo/dojo/dojo.js"></script>
<script type="text/javascript" src="[% ctx.media_prefix %]/js/dojo/dojo/openils_dojo.js"></script>
<script type="text/javascript" src="[% ctx.media_prefix %]/js/dojo/opensrf/md5.js"></script>
+ <script type="text/javascript">var oilsBasePath = '[% ctx.base_path %]'</script>
+ <script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/base.js"></script>
<script type="text/javascript">
- var oilsBasePath = '[% ctx.base_path %]';
+ dojo.require("dijit.layout.LayoutContainer");
+ dojo.require("dijit.layout.ContentPane");
</script>
- <script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/base.js"></script>
</head>
<body class='tundra'>
[% INCLUDE login.tt2 %] <!-- shared login page -->
- [% content %] <!-- Page body -->
+ <div id="oils-base-body-block" class="tundra" dojoType="dijit.layout.LayoutContainer">
+ <div id="oils-base-header-block" dojoType="dijit.layout.ContentPane" layoutAlign="top">
+ <div id='oils-base-header-auto-login-block'>
+ [% INCLUDE header.tt2 %]
+ </div>
+ </div>
+ <div id="oils-base-main-block" dojoType="dijit.layout.LayoutContainer" layoutAlign="client">
+ <div id="oils-base-content-block" dojoType="dijit.layout.ContentPane" layoutAlign="client">
+ [% content %]
+ </div>
+ </div>
+ </div>
</body>
</html>
--- /dev/null
+[% WRAPPER "base.tt2" %]
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/booking/common.js"></script>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/booking/capture.js"></script>
+<link rel="stylesheet" type="text/css" href="[% ctx.media_prefix %]/css/skin/[% ctx.skin %]/booking.css" id="booking_stylesheet_link" />
+<script type="text/javascript">openils.Util.addOnLoad(my_init);</script>
+<div id="auto_l10n_start_here">
+<!-- XXX This interface will probably go away soon in favor of merging its
+behavior into the regular checkin/process/capture interface. -->
+ <h1 class="AUTO_capture_heading booking"></h1>
+ <form class="nice_vertical_padding"
+ onsubmit="attempt_capture(); return false">
+ <label for="resource_barcode" class="AUTO_resource_barcode"></label>
+ <input id="resource_barcode" onfocus="clear_for_next();" />
+ <input type="button" class="AUTO_ATTR_VALUE_capture"
+ onclick="attempt_capture();" />
+ <span id="result_display"></span>
+ </form>
+ <div class="nice_vertical_padding" id="capture_info_top"></div>
+ <div class="nice_vertical_padding" id="capture_info_bottom"></div>
+</div>
+[% END %]
--- /dev/null
+[% WRAPPER "base.tt2" %]
+<link rel="stylesheet" type="text/css" href="[% ctx.media_prefix %]/css/skin/[% ctx.skin %]/booking.css" />
+<div id="auto_l10n_start_here">
+ <h1 class="booking AUTO_h1"></h1>
+ <div class="nice_vertical_padding" id="contains_barcode_control">
+ <form id="lookup" onsubmit="return act(this);">
+ <label for="patron_barcode" class="AUTO_patron_barcode"></label>
+ <input id="patron_barcode" name="patron_barcode" />
+ <input type="submit" class="AUTO_ATTR_VALUE_go" />
+ </form>
+ </div>
+ <div class="nice_vertical_padding" id="contains_patron_info">
+ <div id="patron_info"></div>
+ </div>
+ <div class="nice_vertical_padding" id="contains_ready_bresv">
+ <h3 class="booking AUTO_ready_bresv"></h3>
+ <div class="AUTO_no_ready_bresv" id="no_ready_bresv"></div>
+ <table id="ready_bresv" jsId="ready_bresv"
+ dojoType="dojox.grid.DataGrid" query="{id: '*'}"
+ rowSelector="20px" autoHeight="true" width="auto">
+ <thead>
+ <tr><!-- FIXME: i18n problem: init_auto_l10n() runs
+ too late to take care of the below elements. -->
+ <th width="35%" field="type">Title</th>
+ <th width="25%" field="resource">Barcode</th>
+ <th width="20%" field="start_time">Start time</th>
+ <th width="20%" field="end_time">End time</th>
+ </tr>
+ </thead>
+ </table>
+ <div class="nice_vertical_padding" id="controls_ready_bresv">
+ <form>
+ <input type="button" id="pickup_button"
+ class="AUTO_ATTR_VALUE_pickup"
+ onclick="p.act_on_selected('pickup', 'ready');" />
+ </form>
+ </div>
+ </div>
+ <div class="nice_vertical_padding" id="contains_out_bresv">
+ <hr />
+ <h3 class="booking AUTO_out_bresv"></h3>
+ <div class="AUTO_no_out_bresv" id="no_out_bresv"></div>
+ <table id="out_bresv" jsId="out_bresv"
+ dojoType="dojox.grid.DataGrid" query="{id: '*'}"
+ rowSelector="20px" autoHeight="true" width="auto">
+ <thead>
+ <tr><!-- FIXME: i18n problem: init_auto_l10n() runs
+ too late to take care of the below elements. -->
+ <th width="35%" field="type">Title</th>
+ <th width="25%" field="resource">Barcode</th>
+ <th width="20%" field="pickup_time">Pickup time</th>
+ <th width="20%" field="end_time">Due time</th>
+ </tr>
+ </thead>
+ </table>
+ </div>
+ <div class="nice_vertical_padding" id="contains_misc_controls">
+ <hr />
+ <form>
+ <input type="button" class="AUTO_ATTR_VALUE_reset"
+ onclick="p.reset();" />
+ </form>
+ </div>
+</div>
+
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/booking/common.js"></script>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/booking/populator.js"></script>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/booking/pickup.js"></script>
+<script type="text/javascript">
+ dojo.require("dojox.grid.DataGrid");
+ openils.Util.addOnLoad(my_init);
+
+ function act(f) {
+ p.populate({"patron": f.patron_barcode.value});
+ return false; /* Always. */
+ }
+</script>
+[% END %]
--- /dev/null
+[% WRAPPER "base.tt2" %]
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/booking/common.js"></script>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/booking/pull_list.js"></script>
+<link rel="stylesheet" type="text/css" href="[% ctx.media_prefix %]/css/skin/[% ctx.skin %]/booking.css" />
+<script type="text/javascript">openils.Util.addOnLoad(my_init);</script>
+<div id="auto_l10n_start_here">
+ <h1 class="booking AUTO_pull_list_title"></h1>
+ <form onsubmit="populate_pull_list(this); return false;">
+ <div id="owning_lib_selector_row" class="nice_vertical_padding">
+ <label for="owning_lib_selector" class="AUTO_owning_lib_selector">
+ </label>
+ <select dojoType="openils.widget.OrgUnitFilteringSelect"
+ id="owning_lib_selector" jsId="owning_lib_selector"
+ searchAttr="shortname" labelAttr="shortname"></select>
+ </div>
+ <div id="interval_input_row" class="nice_vertical_padding">
+ <label for="interval_in_days" class="AUTO_interval_in_days"></label>
+
+ <!-- XXX Hardcoded values (like the ones below) are bad. -->
+ <input id="interval_in_days" name="interval_in_days"
+ value="5" maxlength="2" />
+
+ </div>
+ <input type="submit" class="AUTO_ATTR_VALUE_fetch" />
+ </form>
+ <hr />
+ <div id="table_goes_here" class="nice_vertical_padding">
+ <table id="the_table" width="100%">
+ <thead>
+ <tr>
+ <th width="25%" class="AUTO_th_title_or_name"></th>
+ <th width="10%" class="AUTO_th_barcode"></th>
+ <th width="15%" class="AUTO_th_call_number"></th>
+ <th width="10%" class="AUTO_th_copy_location"></th>
+ <th width="40%" class="AUTO_th_resv_details"></th>
+ </tr>
+ </thead>
+ <tbody id="the_table_body">
+ </tbody>
+ </table>
+ <div id="print_holder" class="nice_vertical_padding">
+ <!-- XXX Print button probably won't stay right here -->
+ <input type="button" class="AUTO_ATTR_VALUE_print"
+ onclick="window.print();" /><!-- XXX too simplistic? -->
+ </div>
+ </div>
+ <div id="no_results" class="AUTO_no_results"></div>
+</div>
+[% END %]
--- /dev/null
+[% WRAPPER "base.tt2" %]
+<link rel="stylesheet" type="text/css" href="[% ctx.media_prefix %]/css/skin/[% ctx.skin %]/booking.css" />
+<div id="auto_l10n_start_here">
+ <div id="brt_search_block" class="container">
+ <h1 class="booking AUTO_choose_a_brt"></h1>
+ <form onsubmit="return false;">
+ <div id="select_noncat_brt_block">
+ <div id="brt_selector_here" class="nice_vertical_padding"></div>
+ <div class="nice_vertical_padding">
+ <input type="button" class="AUTO_ATTR_VALUE_next"
+ onclick="init_resv_iface_sel(); return false"
+ />
+ </div>
+ <hr />
+ <div class="nice_vertical_padding AUTO_or" id="or"></div>
+ </div>
+ <div id="arbitrary_resource_block">
+ <label for="arbitrary_resource" class="AUTO_arbitrary_resource">
+ </label>
+ <input id="arbitrary_resource" name="arbitrary_resource" />
+ <input type="button"
+ onclick="init_resv_iface_arb(); return false;"
+ class="AUTO_ATTR_VALUE_next" />
+ <p class="AUTO_explain_bookable"></p>
+ </div>
+ </form>
+ </div>
+
+ <div id="brt_reserve_block" class="container">
+ <form onsubmit="return false;">
+ <div id="brsrc_available_outer">
+ <h1 class="booking" id="brsrc_list_header"></h1>
+ <!-- I'm reluctantly hardcoding the size attribute below to 12
+ since you can't get the behavior of the size attribute with
+ anything in CSS. -->
+ <select id="brsrc_list" name="brsrc_list" multiple="multiple"
+ size="12"></select>
+ <div id="contain_patron_barcode" class="nice_vertical_padding">
+ <label class="AUTO_patron_barcode"
+ for="patron_barcode" /></label>
+ <input name="patron_barcode" id="patron_barcode"
+ onchange="update_bresv_grid();" />
+ </div>
+ <div id="pickup_lib_selector_row" class="nice_vertical_padding">
+ <label for="pickup_lib_selector"
+ &nbs